rouge 3.7.0 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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