"" "
pygments.lexers.j
~~~~~~~~~~~~~~~~~
Lexer
for the J programming language.
:copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE
for details.
"" "
from pygments.lexer
import RegexLexer, words, include, bygroups
from pygments.token
import Comment, Keyword, Name, Number, Operator, \
Punctuation, String, Whitespace
__all__ = [
'JLexer' ]
class JLexer(RegexLexer):
"" "
For J source code.
"" "
name =
'J'
url =
'http://jsoftware.com/ '
aliases = [
'j' ]
filenames = [
'*.ijs' ]
mimetypes = [
'text/x-j' ]
version_added =
'2.1'
validName = r
'\b[a-zA-Z]\w*'
tokens = {
'root' : [
# Shebang script
(r
'#!.*$', Comment.Preproc),
# Comments
(r
'NB\..*' , Comment.Single),
(r
'(\n+\s*)(Note)' , bygroups(Whitespace, Comment.Multiline),
'comment' ),
(r
'(\s*)(Note.*)' , bygroups(Whitespace, Comment.Single)),
# Whitespace
(r
'\s+' , Whitespace),
# Strings
(r
"'" , String,
'singlequote' ),
# Definitions
(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),
(words((
'assert' ,
'break' ,
'case' ,
'catch' ,
'catchd' ,
'catcht' ,
'continue' ,
'do' ,
'else' ,
'elseif' ,
'end' ,
'fcase' ,
'for' ,
'if' ,
'return' ,
'select' ,
'throw' ,
'try' ,
'while' ,
'whilst' ,
), suffix=r
'\.' ), Name.Label),
# Variable Names
(validName, Name.Variable),
# Standard Library
(words((
'ARGV' ,
'CR' ,
'CRLF' ,
'DEL' ,
'Debug' ,
'EAV' ,
'EMPTY' ,
'FF' ,
'JVERSION' ,
'LF' ,
'LF2' ,
'Note' ,
'TAB' ,
'alpha17' ,
'alpha27' ,
'apply' ,
'bind' ,
'boxopen' ,
'boxxopen' ,
'bx' ,
'clear' ,
'cutLF' ,
'cutopen' ,
'datatype' ,
'def' ,
'dfh' ,
'drop' ,
'each' ,
'echo' ,
'empty' ,
'erase' ,
'every' ,
'evtloop' ,
'exit' ,
'expand' ,
'fetch' ,
'file2url' ,
'fixdotdot' ,
'fliprgb' ,
'getargs' ,
'getenv' ,
'hfd' ,
'inv' ,
'inverse' ,
'iospath' ,
'isatty' ,
'isutf8' ,
'items' ,
'leaf' ,
'list' ,
'nameclass' ,
'namelist' ,
'names' ,
'nc' ,
'nl' ,
'on' ,
'pick' ,
'rows' ,
'script' ,
'scriptd' ,
'sign' ,
'sminfo' ,
'smoutput' ,
'sort' ,
'split' ,
'stderr' ,
'stdin' ,
'stdout' ,
'table' ,
'take' ,
'timespacex' ,
'timex' ,
'tmoutput' ,
'toCRLF' ,
'toHOST' ,
'toJ' ,
'tolower' ,
'toupper' ,
'type' ,
'ucp' ,
'ucpcount' ,
'usleep' ,
'utf8' ,
'uucp' ,
)), Name.Function),
# Copula
(r
'=[.:]' , Operator),
# Builtins
(r
'[-=+*#$%@!~`^&";:.,<>{}\[\]\\|/?]', Operator),
# Short Keywords
(r
'[abCdDeEfHiIjLMoprtT]\.' , Keyword.Reserved),
(r
'[aDiLpqsStux]\:' , Keyword.Reserved),
(r
'(_[0-9])\:' , Keyword.Constant),
# Parens
(r
'\(' , Punctuation,
'parentheses' ),
# Numbers
include(
'numbers' ),
],
'comment' : [
(r
'[^)]' , Comment.Multiline),
(r
'^\)' , Comment.Multiline,
'#pop'),
(r
'[)]' , Comment.Multiline),
],
'explicitDefinition' : [
(r
'\b[nmuvxy]\b' , Name.Decorator),
include(
'root' ),
(r
'[^)]' , Name),
(r
'^\)' , Name.Label,
'#pop'),
(r
'[)]' , Name),
],
'numbers' : [
(r
'\b_{1,2}\b' , Number),
(r
'_?\d+(\.\d+)?(\s*[ejr]\s*)_?\d+(\.?=\d+)?' , Number),
(r
'_?\d+\.(?=\d+)' , Number.Float),
(r
'_?\d+x' , Number.Integer.Long),
(r
'_?\d+' , Number.Integer),
],
'nounDefinition' : [
(r
'[^)]+' , String),
(r
'^\)' , Name.Label,
'#pop'),
(r
'[)]' , String),
],
'parentheses' : [
(r
'\)' , Punctuation,
'#pop'),
# include('nounDefinition'),
include(
'explicitDefinition' ),
include(
'root' ),
],
'singlequote' : [
(r
"[^']+" , String),
(r
"''" , String),
(r
"'" , String,
'#pop'),
],
}
Messung V0.5 C=98 H=100 G=98
¤ Dauer der Verarbeitung: 0.6 Sekunden
¤
*© Formatika GbR, Deutschland