@@ -48,7 +48,7 @@ def self.keywords
4848 rule %r(/\* ) , Comment ::Multiline , :multiline_comments
4949
5050 rule %r([*+\- <>=&|~%^]) , Operator
51- rule %r/[{}),;\[ \] ]/ , Str :: Symbol
51+ rule %r/[{}),;\[ \] ]/ , Punctuation
5252
5353 # literal number
5454 rule %r/(\w +)(:)(\s *)(-?[._\d ]+)/ do
@@ -59,15 +59,13 @@ def self.keywords
5959 # - "name("
6060 # - "name ("
6161 # - "name ("
62- rule %r/(\w +)(\s *)(\( )/ do |m |
63- name = m [ 1 ] . upcase
64- if self . class . functions . include? name
65- groups Name ::Function , Text ::Whitespace , Str ::Symbol
66- elsif self . class . keywords . include? name
67- groups Keyword , Text ::Whitespace , Str ::Symbol
68- else
69- groups Name , Text ::Whitespace , Str ::Symbol
70- end
62+ keywords %r/(\w +)(?=\s *[(])/ do |m |
63+ group 1
64+ transform ( &:upcase )
65+
66+ rule :functions , Name ::Function
67+ rule :keywords , Keyword
68+ default Name
7169 end
7270
7371 rule %r/:\w +/ , Name ::Class
@@ -87,7 +85,7 @@ def self.keywords
8785 rule %r([.\w ]+:) , Name ::Property
8886
8987 # remaining "("
90- rule %r/\( / , Str :: Symbol
88+ rule %r/\( / , Punctuation
9189
9290 rule %r/[.\w $]+/ do |m |
9391 match = m [ 0 ] . upcase
0 commit comments