# -*- coding: utf-8 -*- # # frozen_string_literal: true module Rouge module Lexers class JSL < RegexLexer title "JSL" desc "The JMP Scripting Language (JSL) (jmp.com)" tag 'jsl' filenames '*.jsl' state :root do rule %r/\s+/m, Text::Whitespace rule %r(//.*?$), Comment::Single rule %r'/[*].*', Comment::Multiline, :comment # messages rule %r/<\|=:`^]/, Operator rule %r/[\[\](){},;]/, Punctuation end state :message do rule %r/\s+/m, Text::Whitespace rule %r/[a-z_][\w\s'%.\\]*/i, Name::Function rule %r/[(),;]/, Punctuation, :pop! rule %r/[&|!=<>]/, Operator, :pop! end state :dq do rule %r/\\![btrnNf0\\"]/, Str::Escape rule %r/\\/, Str::Double rule %r/"/, Str::Double, :pop! rule %r/[^\\"]+/m, Str::Double end state :comment do rule %r'/[*]', Comment::Multiline, :comment rule %r'[*]/', Comment::Multiline, :pop! rule %r'[^/*]+', Comment::Multiline rule %r'[/*]', Comment::Multiline end end end end