rouge 3.7.0 → 3.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/lib/rouge/demos/armasm +12 -0
  4. data/lib/rouge/demos/batchfile +3 -0
  5. data/lib/rouge/demos/bbcbasic +6 -0
  6. data/lib/rouge/demos/cmhg +8 -0
  7. data/lib/rouge/demos/cython +6 -0
  8. data/lib/rouge/demos/eex +1 -0
  9. data/lib/rouge/demos/epp +4 -0
  10. data/lib/rouge/demos/haxe +5 -0
  11. data/lib/rouge/demos/hql +5 -0
  12. data/lib/rouge/demos/msgtrans +4 -0
  13. data/lib/rouge/demos/plist +1 -132
  14. data/lib/rouge/demos/terraform +0 -15
  15. data/lib/rouge/formatters/html_line_table.rb +3 -1
  16. data/lib/rouge/formatters/tex.rb +11 -12
  17. data/lib/rouge/guessers/disambiguation.rb +8 -0
  18. data/lib/rouge/lexers/armasm.rb +145 -0
  19. data/lib/rouge/lexers/batchfile.rb +164 -0
  20. data/lib/rouge/lexers/bbcbasic.rb +112 -0
  21. data/lib/rouge/lexers/cmhg.rb +34 -0
  22. data/lib/rouge/lexers/console.rb +1 -1
  23. data/lib/rouge/lexers/cpp.rb +4 -1
  24. data/lib/rouge/lexers/cython.rb +151 -0
  25. data/lib/rouge/lexers/eex.rb +51 -0
  26. data/lib/rouge/lexers/elixir.rb +20 -9
  27. data/lib/rouge/lexers/epp.rb +51 -0
  28. data/lib/rouge/lexers/haxe.rb +246 -0
  29. data/lib/rouge/lexers/hql.rb +139 -0
  30. data/lib/rouge/lexers/http.rb +5 -5
  31. data/lib/rouge/lexers/javascript.rb +1 -1
  32. data/lib/rouge/lexers/json.rb +1 -1
  33. data/lib/rouge/lexers/julia.rb +1 -1
  34. data/lib/rouge/lexers/make.rb +39 -12
  35. data/lib/rouge/lexers/matlab.rb +4 -2
  36. data/lib/rouge/lexers/matlab/builtins.yml +3515 -0
  37. data/lib/rouge/lexers/msgtrans.rb +26 -0
  38. data/lib/rouge/lexers/plain_text.rb +1 -1
  39. data/lib/rouge/lexers/puppet.rb +2 -2
  40. data/lib/rouge/lexers/q.rb +1 -1
  41. data/lib/rouge/lexers/r.rb +2 -3
  42. data/lib/rouge/lexers/sed.rb +1 -1
  43. data/lib/rouge/lexers/sql.rb +26 -6
  44. data/lib/rouge/lexers/terraform.rb +8 -0
  45. data/lib/rouge/tex_theme_renderer.rb +2 -1
  46. data/lib/rouge/themes/magritte.rb +2 -2
  47. data/lib/rouge/version.rb +1 -1
  48. data/rouge.gemspec +4 -2
  49. metadata +28 -6
  50. data/lib/rouge/lexers/matlab/builtins.rb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71832bb306e80d00d6416e2e0c7787810cee88f614afbf5e31264512fe7914e5
4
- data.tar.gz: f7228f6567515239ade1d9de8c37e437ece59ba54bb81566d008df7db25545f7
3
+ metadata.gz: c2f0b54640482b19036e531f9a7da24b88a57e4f908f58ca5d9a515771ff5d31
4
+ data.tar.gz: bb378080c11eec20243d1a9abb85fbe8bbaddbcdeb836d60a80972cbe69ae25b
5
5
  SHA512:
6
- metadata.gz: f5441fc76804158ae89d9c05c11f430247c4966fccc4d12e5f6690d1081f9da6221a05b92d696022fa0b2b0655760f4cd6e86e27080556be41e995e47c15901f
7
- data.tar.gz: 16a2988f811ff0eb93133ce6f812f7217d29d6f34ec7838211197ebf8db48bd8a84e7f8bf4d330d6be885f49d49a5b9ad94697144b2746aab5ca5d4f20bb5aba
6
+ metadata.gz: 11f884bbfd8b631eacae6da8497d6b8444c4ec748dfceea4e8d8a7d5b92aadc6f36ca6e50367477b7b4e465004ed3c52ac597c3ed19a9e49742ed93de4c40d71
7
+ data.tar.gz: 137d26aa2078d6d26ba17d57b75f330e071e15211816a60daa35b269784c8fba44ddd00813d4c0d2427412084d0a47a19edace54b3bc3320751d3b10105e4a07
data/Gemfile CHANGED
@@ -22,12 +22,12 @@ end
22
22
 
23
23
  # Needed for a Rake task
24
24
  gem 'git'
25
+ gem 'yard'
25
26
 
26
27
  group :development do
27
28
  gem 'pry'
28
29
 
29
30
  # docs
30
- gem 'yard'
31
31
  gem 'github-markup'
32
32
 
33
33
  # for visual tests
@@ -0,0 +1,12 @@
1
+ GET common.s
2
+
3
+ RetVal * 0x123 :SHL: 4
4
+
5
+ AREA |Area$$Name|, CODE, READONLY
6
+
7
+ MyFunction ROUT ; This is a comment
8
+ ASSERT RetVal <> 0
9
+ 1 MOVW r0, #RetVal
10
+ BX lr
11
+
12
+ END
@@ -0,0 +1,3 @@
1
+ @echo off
2
+ setlocal enableextensions enabledelayedexpansion
3
+ for /f "tokens=*" %%a in ("hello !username! hi") do echo %%~a
@@ -0,0 +1,6 @@
1
+ REM > DefaultFilename
2
+ REM Ordinary comment
3
+ FOR n=1 TO 10
4
+ PRINTTAB(n)"Hello there ";FNnumber(n)DIV3+1
5
+ NEXT:END
6
+ DEFFNnumber(x%)=ABS(x%-4)
@@ -0,0 +1,8 @@
1
+ ; Header comments
2
+
3
+ #include "definitions.h"
4
+
5
+ command-keyword-table: command_handler
6
+ foo(min-args:0, max-args:0,; comment
7
+ international:,
8
+ invalid-syntax: "syntaxtoken" help-text: "helptoken")
@@ -0,0 +1,6 @@
1
+ cdef extern from 'foo.h':
2
+ int foo_int
3
+ struct foo_struct:
4
+ pass
5
+
6
+ ctypedef int word
@@ -0,0 +1 @@
1
+ <title><%= @title %></title>
@@ -0,0 +1,4 @@
1
+ <%- |
2
+ Optional[String] $title,
3
+ | -%>
4
+ <title><%= $title %></title>
@@ -0,0 +1,5 @@
1
+ // hello world!
2
+ public static function hello(arg : String) {
3
+ return 'Hello $arg';
4
+ }
5
+
@@ -0,0 +1,5 @@
1
+ SELECT e.first_name, e.last_name, d.department_name
2
+ FROM employees e
3
+ JOIN departments d ON e.department_id = d.department_id;
4
+
5
+ update `table` set name='abc', date=${date}, test_interpolation="${var1}.${var2}" where xyz is null;
@@ -0,0 +1,4 @@
1
+ # Example MessageTrans file
2
+ Token
3
+ Token0x??:Replacement localised %0 text
4
+ Color/Colour:Colour
@@ -5,138 +5,7 @@
5
5
  };
6
6
  objectVersion = 46;
7
7
  objects = {
8
-
9
- /* Begin PBXGroup section */
10
- 1D67B9537FE4C81097096F85 /* Frameworks */ = {
11
- isa = PBXGroup;
12
- children = (
13
- );
14
- name = Frameworks;
15
- sourceTree = "<group>";
16
- };
17
- 74946460D3EE9E1FA4792785 = {
18
- isa = PBXGroup;
19
- children = (
20
- E3060171E73473A889949AB5 /* Products */,
21
- 1D67B9537FE4C81097096F85 /* Frameworks */,
22
- );
23
- sourceTree = "<group>";
24
- };
25
- E3060171E73473A889949AB5 /* Products */ = {
26
- isa = PBXGroup;
27
- children = (
28
- );
29
- name = Products;
30
- sourceTree = "<group>";
31
- };
32
- /* End PBXGroup section */
33
-
34
- /* Begin PBXProject section */
35
- B3A67937542EC2041CBF1CA2 /* Project object */ = {
36
- isa = PBXProject;
37
- attributes = {
38
- LastSwiftUpdateCheck = 0730;
39
- LastUpgradeCheck = 0700;
40
- };
41
- buildConfigurationList = 442CE273DD7DF2DFDC620C8B /* Build configuration list for PBXProject "foo" */;
42
- compatibilityVersion = "Xcode 3.2";
43
- developmentRegion = English;
44
- hasScannedForEncodings = 0;
45
- knownRegions = (
46
- en,
47
- );
48
- mainGroup = 74946460D3EE9E1FA4792785;
49
- productRefGroup = E3060171E73473A889949AB5 /* Products */;
50
- projectDirPath = "";
51
- projectRoot = "";
52
- targets = (
53
- );
54
- };
55
- /* End PBXProject section */
56
-
57
- /* Begin XCBuildConfiguration section */
58
- 09AC0D63F19B6944E1045E60 /* Release */ = {
59
- isa = XCBuildConfiguration;
60
- buildSettings = {
61
- ALWAYS_SEARCH_USER_PATHS = NO;
62
- CLANG_ANALYZER_NONNULL = YES;
63
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
64
- CLANG_CXX_LIBRARY = "libc++";
65
- CLANG_ENABLE_MODULES = YES;
66
- CLANG_ENABLE_OBJC_ARC = YES;
67
- CLANG_WARN_BOOL_CONVERSION = YES;
68
- CLANG_WARN_CONSTANT_CONVERSION = YES;
69
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
70
- CLANG_WARN_EMPTY_BODY = YES;
71
- CLANG_WARN_ENUM_CONVERSION = YES;
72
- CLANG_WARN_INT_CONVERSION = YES;
73
- CLANG_WARN_OBJC_ROOT_CLASS = YES;
74
- CLANG_WARN_UNREACHABLE_CODE = YES;
75
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
76
- COPY_PHASE_STRIP = YES;
77
- ENABLE_NS_ASSERTIONS = NO;
78
- GCC_C_LANGUAGE_STANDARD = gnu99;
79
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
80
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
81
- GCC_WARN_UNDECLARED_SELECTOR = YES;
82
- GCC_WARN_UNINITIALIZED_AUTOS = YES;
83
- GCC_WARN_UNUSED_FUNCTION = YES;
84
- GCC_WARN_UNUSED_VARIABLE = YES;
85
- VALIDATE_PRODUCT = YES;
86
- };
87
- name = Release;
88
- };
89
- 4D494CA5F82DCCAB3194BA09 /* Debug */ = {
90
- isa = XCBuildConfiguration;
91
- buildSettings = {
92
- ALWAYS_SEARCH_USER_PATHS = NO;
93
- CLANG_ANALYZER_NONNULL = YES;
94
- CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
95
- CLANG_CXX_LIBRARY = "libc++";
96
- CLANG_ENABLE_MODULES = YES;
97
- CLANG_ENABLE_OBJC_ARC = YES;
98
- CLANG_WARN_BOOL_CONVERSION = YES;
99
- CLANG_WARN_CONSTANT_CONVERSION = YES;
100
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES;
101
- CLANG_WARN_EMPTY_BODY = YES;
102
- CLANG_WARN_ENUM_CONVERSION = YES;
103
- CLANG_WARN_INT_CONVERSION = YES;
104
- CLANG_WARN_OBJC_ROOT_CLASS = YES;
105
- CLANG_WARN_UNREACHABLE_CODE = YES;
106
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
107
- COPY_PHASE_STRIP = NO;
108
- ENABLE_TESTABILITY = YES;
109
- GCC_C_LANGUAGE_STANDARD = gnu99;
110
- GCC_DYNAMIC_NO_PIC = NO;
111
- GCC_OPTIMIZATION_LEVEL = 0;
112
- GCC_PREPROCESSOR_DEFINITIONS = (
113
- "DEBUG=1",
114
- "$(inherited)",
115
- );
116
- GCC_SYMBOLS_PRIVATE_EXTERN = NO;
117
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
118
- GCC_WARN_ABOUT_RETURN_TYPE = YES;
119
- GCC_WARN_UNDECLARED_SELECTOR = YES;
120
- GCC_WARN_UNINITIALIZED_AUTOS = YES;
121
- GCC_WARN_UNUSED_FUNCTION = YES;
122
- GCC_WARN_UNUSED_VARIABLE = YES;
123
- ONLY_ACTIVE_ARCH = YES;
124
- };
125
- name = Debug;
126
- };
127
- /* End XCBuildConfiguration section */
128
-
129
- /* Begin XCConfigurationList section */
130
- 442CE273DD7DF2DFDC620C8B /* Build configuration list for PBXProject "foo" */ = {
131
- isa = XCConfigurationList;
132
- buildConfigurations = (
133
- 4D494CA5F82DCCAB3194BA09 /* Debug */,
134
- 09AC0D63F19B6944E1045E60 /* Release */,
135
- );
136
- defaultConfigurationIsVisible = 0;
137
- defaultConfigurationName = Release;
138
- };
139
- /* End XCConfigurationList section */
8
+ /* ... */
140
9
  };
141
10
  rootObject = B3A67937542EC2041CBF1CA2 /* Project object */;
142
11
  }
@@ -1,10 +1,3 @@
1
- # From: https://github.com/terraform-providers/terraform-provider-aws/blob/master/examples/count/main.tf
2
-
3
- # Specify the provider and access details
4
- provider "aws" {
5
- region = "${var.aws_region}"
6
- }
7
-
8
1
  resource "aws_elb" "web" {
9
2
  name = "terraform-example-elb"
10
3
 
@@ -21,11 +14,3 @@ resource "aws_elb" "web" {
21
14
  # The instances are registered automatically
22
15
  instances = ["${aws_instance.web.*.id}"]
23
16
  }
24
-
25
- resource "aws_instance" "web" {
26
- instance_type = "m1.small"
27
- ami = "${lookup(var.aws_amis, var.aws_region)}"
28
-
29
- # This will create 4 instances
30
- count = 4
31
- }
@@ -37,7 +37,9 @@ module Rouge
37
37
  token_lines(tokens) do |line_tokens|
38
38
  lineno += 1
39
39
  buffer << %(<tr id="#{sprintf @line_id, lineno}" class="#@line_class">)
40
- buffer << %(<td class="#@gutter_class gl">)
40
+ buffer << %(<td class="#@gutter_class gl" )
41
+ buffer << %(style="-moz-user-select: none;-ms-user-select: none;)
42
+ buffer << %(-webkit-user-select: none;user-select: none;">)
41
43
  buffer << %(<pre>#{lineno}</pre></td>)
42
44
  buffer << %(<td class="#@code_class"><pre>)
43
45
  @formatter.stream(line_tokens) { |formatted| buffer << formatted }
@@ -22,6 +22,9 @@ module Rouge
22
22
  '^' => '{\textasciicircum}',
23
23
  '|' => '{\textbar}',
24
24
  '\\' => '{\textbackslash}',
25
+ '`' => '{\textasciigrave}',
26
+ "'" => "'{}",
27
+ '"' => '"{}',
25
28
  "\t" => '{\tab}',
26
29
  }
27
30
 
@@ -59,24 +62,20 @@ module Rouge
59
62
  end
60
63
 
61
64
  def render_line(line, &b)
62
- head, *rest = line
63
- return unless head
64
-
65
- tag_first(*head, &b)
66
- rest.each do |(tok, val)|
67
- yield tag(tok, val)
65
+ line.each do |(tok, val)|
66
+ hphantom_tag(tok, val, &b)
68
67
  end
69
68
  end
70
69
 
71
- # special handling for the first token
72
- # of a line. we replace all initial spaces
73
- # with \hphantom{xxxx}, which renders an
74
- # empty space equal to the size of the x's.
75
- def tag_first(tok, val)
70
+ # Special handling for leading spaces, since they may be gobbled
71
+ # by a previous command. We replace all initial spaces with
72
+ # \hphantom{xxxx}, which renders an empty space equal to the size
73
+ # of the x's.
74
+ def hphantom_tag(tok, val)
76
75
  leading = nil
77
76
  val.sub!(/^[ ]+/) { leading = $&.size; '' }
78
77
  yield "\\hphantom{#{'x' * leading}}" if leading
79
- yield tag(tok, val)
78
+ yield tag(tok, val) unless val.empty?
80
79
  end
81
80
 
82
81
  def tag(tok, val)
@@ -75,6 +75,8 @@ module Rouge
75
75
  disambiguate '*.h' do
76
76
  next ObjectiveC if matches?(/@(end|implementation|protocol|property)\b/)
77
77
  next ObjectiveC if contains?('@"')
78
+ next Cpp if matches?(/^\s*(?:catch|class|constexpr|namespace|private|
79
+ protected|public|template|throw|try|using)\b/x)
78
80
 
79
81
  C
80
82
  end
@@ -118,6 +120,12 @@ module Rouge
118
120
 
119
121
  next Python
120
122
  end
123
+
124
+ disambiguate 'Messages' do
125
+ next MsgTrans if matches?(/^[^\s:]+:[^\s:]+/)
126
+
127
+ next PlainText
128
+ end
121
129
  end
122
130
  end
123
131
  end
@@ -0,0 +1,145 @@
1
+ # -*- coding: utf-8 -*- #
2
+ # frozen_string_literal: true
3
+
4
+ module Rouge
5
+ module Lexers
6
+ class ArmAsm < RegexLexer
7
+ title "ArmAsm"
8
+ desc "Arm assembly syntax"
9
+ tag 'armasm'
10
+ filenames '*.s'
11
+
12
+ def self.preproc_keyword
13
+ @preproc_keyword ||= %w(
14
+ define elif else endif error if ifdef ifndef include line pragma undef warning
15
+ )
16
+ end
17
+
18
+ def self.file_directive
19
+ @file_directive ||= %w(
20
+ BIN GET INCBIN INCLUDE LNK
21
+ )
22
+ end
23
+
24
+ def self.general_directive
25
+ @general_directive ||= %w(
26
+ ALIAS ALIGN AOF AOUT AREA ARM ASSERT ATTR CN CODE16 CODE32 COMMON CP
27
+ DATA DCB DCD DCDO DCDU DCFD DCFDU DCFH DCFHU DCFS DCFSU DCI DCI.N DCI.W
28
+ DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT
29
+ EXPORTAS EXTERN FIELD FILL FN FRAME FUNCTION GBLA GBLL GBLS GLOBAL IF
30
+ IMPORT INFO KEEP LCLA LCLL LCLS LEADR LEAF LTORG MACRO MAP MEND MEXIT
31
+ NOFP OPT ORG PRESERVE8 PROC QN RELOC REQUIRE REQUIRE8 RLIST RN ROUT
32
+ SETA SETL SETS SN SPACE STRONG SUBT THUMB THUMBX TTL WEND WHILE
33
+ \[ \] [|!#*=%&^]
34
+ )
35
+ end
36
+
37
+ def self.shift_or_condition
38
+ @shift_or_condition ||= %w(
39
+ ASR LSL LSR ROR RRX AL CC CS EQ GE GT HI HS LE LO LS LT MI NE PL VC VS
40
+ asr lsl lsr ror rrx al cc cs eq ge gt hi hs le lo ls lt mi ne pl vc vs
41
+ )
42
+ end
43
+
44
+ def self.builtin
45
+ @builtin ||= %w(
46
+ ARCHITECTURE AREANAME ARMASM_VERSION CODESIZE COMMANDLINE CONFIG CPU
47
+ ENDIAN FALSE FPIC FPU INPUTFILE INTER LINENUM LINENUMUP LINENUMUPPER
48
+ OBJASM_VERSION OPT PC PCSTOREOFFSET REENTRANT ROPI RWPI TRUE VAR
49
+ )
50
+ end
51
+
52
+ def self.operator
53
+ @operator ||= %w(
54
+ AND BASE CC CC_ENCODING CHR DEF EOR FATTR FEXEC FLOAD FSIZE INDEX LAND
55
+ LEFT LEN LEOR LNOT LOR LOWERCASE MOD NOT OR RCONST REVERSE_CC RIGHT ROL
56
+ ROR SHL SHR STR TARGET_ARCH_[0-9A-Z_]+ TARGET_FEATURE_[0-9A-Z_]+
57
+ TARGET_FPU_[A-Z_] TARGET_PROFILE_[ARM] UAL UPPERCASE
58
+ )
59
+ end
60
+
61
+ state :root do
62
+ rule %r/\n/, Text
63
+ rule %r/^([ \t]*)(#[ \t]*(?:(?:#{ArmAsm.preproc_keyword.join('|')})(?:[ \t].*)?)?)(\n)/ do
64
+ groups Text, Comment::Preproc, Text
65
+ end
66
+ rule %r/[ \t]+/, Text, :command
67
+ rule %r/;.*/, Comment
68
+ rule %r/\$[a-z_]\w*\.?/i, Name::Namespace # variable substitution or macro argument
69
+ rule %r/\w+|\|[^|\n]+\|/, Name::Label
70
+ end
71
+
72
+ state :command do
73
+ rule %r/\n/, Text, :pop!
74
+ rule %r/[ \t]+/ do |m|
75
+ token Text
76
+ goto :args
77
+ end
78
+ rule %r/;.*/, Comment, :pop!
79
+ rule %r/(?:#{ArmAsm.file_directive.join('|')})\b/ do |m|
80
+ token Keyword
81
+ goto :filespec
82
+ end
83
+ rule %r/(?:#{ArmAsm.general_directive.join('|')})(?=[; \t\n])/, Keyword
84
+ rule %r/(?:[A-Z][\dA-Z]*|[a-z][\da-z]*)(?:\.[NWnw])?(?:\.[DFIPSUdfipsu]?(?:8|16|32|64)?){,3}\b/, Name::Builtin # rather than attempt to list all opcodes, rely on all-uppercase or all-lowercase rule
85
+ rule %r/[a-z_]\w*|\|[^|\n]+\|/i, Name::Function # probably a macro name
86
+ rule %r/\$[a-z]\w*\.?/i, Name::Namespace
87
+ end
88
+
89
+ state :args do
90
+ rule %r/\n/, Text, :pop!
91
+ rule %r/[ \t]+/, Text
92
+ rule %r/;.*/, Comment, :pop!
93
+ rule %r/(?:#{ArmAsm.shift_or_condition.join('|')})\b/, Name::Builtin
94
+ rule %r/[a-z_]\w*|\|[^|\n]+\|/i, Name::Variable # various types of symbol
95
+ rule %r/%[bf]?[at]?\d+(?:[a-z_]\w*)?/i, Name::Label
96
+ rule %r/(?:&|0x)\h+(?!p)/i, Literal::Number::Hex
97
+ rule %r/(?:&|0x)[.\h]+(?:p[-+]?\d+)?/i, Literal::Number::Float
98
+ rule %r/0f_\h{8}|0d_\h{16}/i, Literal::Number::Float
99
+ rule %r/(?:2_[01]+|3_[0-2]+|4_[0-3]+|5_[0-4]+|6_[0-5]+|7_[0-6]+|8_[0-7]+|9_[0-8]+|\d+)(?!e)/i, Literal::Number::Integer
100
+ rule %r/(?:2_[.01]+|3_[.0-2]+|4_[.0-3]+|5_[.0-4]+|6_[.0-5]+|7_[.0-6]+|8_[.0-7]+|9_[.0-8]+|[.\d]+)(?:e[-+]?\d+)?/i, Literal::Number::Float
101
+ rule %r/[@:](?=[ \t]*(?:8|16|32|64|128|256)[^\d])/, Operator
102
+ rule %r/[.@]|\{(?:#{ArmAsm.builtin.join('|')})\}/, Name::Constant
103
+ rule %r/[-!#%&()*+,\/<=>?^{|}]|\[|\]|!=|&&|\/=|<<|<=|<>|==|><|>=|>>|\|\||:(?:#{ArmAsm.operator.join('|')}):/, Operator
104
+ rule %r/\$[a-z]\w*\.?/i, Name::Namespace
105
+ rule %r/'/ do |m|
106
+ token Literal::String::Char
107
+ goto :singlequoted
108
+ end
109
+ rule %r/"/ do |m|
110
+ token Literal::String::Double
111
+ goto :doublequoted
112
+ end
113
+ end
114
+
115
+ state :singlequoted do
116
+ rule %r/\n/, Text, :pop!
117
+ rule %r/\$\$/, Literal::String::Char
118
+ rule %r/\$[a-z]\w*\.?/i, Name::Namespace
119
+ rule %r/'/ do |m|
120
+ token Literal::String::Char
121
+ goto :args
122
+ end
123
+ rule %r/[^$'\n]+/, Literal::String::Char
124
+ end
125
+
126
+ state :doublequoted do
127
+ rule %r/\n/, Text, :pop!
128
+ rule %r/\$\$/, Literal::String::Double
129
+ rule %r/\$[a-z]\w*\.?/i, Name::Namespace
130
+ rule %r/"/ do |m|
131
+ token Literal::String::Double
132
+ goto :args
133
+ end
134
+ rule %r/[^$"\n]+/, Literal::String::Double
135
+ end
136
+
137
+ state :filespec do
138
+ rule %r/\n/, Text, :pop!
139
+ rule %r/\$\$/, Literal::String::Other
140
+ rule %r/\$[a-z]\w*\.?/i, Name::Namespace
141
+ rule %r/[^$\n]+/, Literal::String::Other
142
+ end
143
+ end
144
+ end
145
+ end