Skip to content

Commit 2021287

Browse files
authored
[feat]: Add Lua Parser (#30)
* add lua parser to container * build framework, add lua parser to CodeEditLanguages * update docs
1 parent bbac54c commit 2021287

File tree

15 files changed

+306
-0
lines changed

15 files changed

+306
-0
lines changed

CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.pbxproj

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
282C119329AA32C8004F1EA6 /* TreeSitterSQL in Frameworks */ = {isa = PBXBuildFile; productRef = 282C119229AA32C8004F1EA6 /* TreeSitterSQL */; };
1212
282E5977298051980064B34A /* TreeSitterYAML in Frameworks */ = {isa = PBXBuildFile; productRef = 282E5976298051980064B34A /* TreeSitterYAML */; };
1313
2846B262296BA1CF005F60B6 /* TreeSitterDockerfile in Frameworks */ = {isa = PBXBuildFile; productRef = 2846B261296BA1CF005F60B6 /* TreeSitterDockerfile */; };
14+
285BF67329AAA45B00641989 /* TreeSitterLua in Frameworks */ = {isa = PBXBuildFile; productRef = 285BF67229AAA45B00641989 /* TreeSitterLua */; };
1415
2886C788298135540023E016 /* TreeSitterKotlin in Frameworks */ = {isa = PBXBuildFile; productRef = 2886C787298135540023E016 /* TreeSitterKotlin */; };
1516
28B3F010290C207D000CD04D /* CodeLanguages_Container.h in Headers */ = {isa = PBXBuildFile; fileRef = 28B3F00F290C207D000CD04D /* CodeLanguages_Container.h */; settings = {ATTRIBUTES = (Public, ); }; };
1617
28B3F02D290C35D9000CD04D /* TreeSitterC in Frameworks */ = {isa = PBXBuildFile; productRef = 28B3F02C290C35D9000CD04D /* TreeSitterC */; };
@@ -48,6 +49,7 @@
4849
files = (
4950
28B3F051290C36B1000CD04D /* TreeSitterPHP in Frameworks */,
5051
28B3F042290C365C000CD04D /* TreeSitterHaskell in Frameworks */,
52+
285BF67329AAA45B00641989 /* TreeSitterLua in Frameworks */,
5153
2846B262296BA1CF005F60B6 /* TreeSitterDockerfile in Frameworks */,
5254
282C119329AA32C8004F1EA6 /* TreeSitterSQL in Frameworks */,
5355
28B3F039290C362C000CD04D /* TreeSitterElixir in Frameworks */,
@@ -172,6 +174,7 @@
172174
28171CB729814CD800523F1C /* TreeSitterObjC */,
173175
9D6DA3B7298F1A4600E69066 /* TreeSitterOCaml */,
174176
282C119229AA32C8004F1EA6 /* TreeSitterSQL */,
177+
285BF67229AAA45B00641989 /* TreeSitterLua */,
175178
);
176179
productName = "CodeLanguages-Container";
177180
productReference = 28B3F00C290C207D000CD04D /* CodeLanguages_Container.framework */;
@@ -227,6 +230,7 @@
227230
28171CB629814CD800523F1C /* XCRemoteSwiftPackageReference "tree-sitter-objc" */,
228231
9D6DA3B6298F1A4500E69066 /* XCRemoteSwiftPackageReference "tree-sitter-ocaml" */,
229232
282C119129AA32C8004F1EA6 /* XCRemoteSwiftPackageReference "tree-sitter-sql" */,
233+
285BF67129AAA45B00641989 /* XCRemoteSwiftPackageReference "tree-sitter-lua" */,
230234
);
231235
productRefGroup = 28B3F00D290C207D000CD04D /* Products */;
232236
projectDirPath = "";
@@ -498,6 +502,14 @@
498502
kind = branch;
499503
};
500504
};
505+
285BF67129AAA45B00641989 /* XCRemoteSwiftPackageReference "tree-sitter-lua" */ = {
506+
isa = XCRemoteSwiftPackageReference;
507+
repositoryURL = "https://github.com/lukepistrol/tree-sitter-lua.git";
508+
requirement = {
509+
branch = feature/spm;
510+
kind = branch;
511+
};
512+
};
501513
2886C786298135540023E016 /* XCRemoteSwiftPackageReference "tree-sitter-kotlin" */ = {
502514
isa = XCRemoteSwiftPackageReference;
503515
repositoryURL = "https://github.com/lukepistrol/tree-sitter-kotlin";
@@ -689,6 +701,11 @@
689701
package = 2846B260296BA1CF005F60B6 /* XCRemoteSwiftPackageReference "tree-sitter-dockerfile" */;
690702
productName = TreeSitterDockerfile;
691703
};
704+
285BF67229AAA45B00641989 /* TreeSitterLua */ = {
705+
isa = XCSwiftPackageProductDependency;
706+
package = 285BF67129AAA45B00641989 /* XCRemoteSwiftPackageReference "tree-sitter-lua" */;
707+
productName = TreeSitterLua;
708+
};
692709
2886C787298135540023E016 /* TreeSitterKotlin */ = {
693710
isa = XCSwiftPackageProductDependency;
694711
package = 2886C786298135540023E016 /* XCRemoteSwiftPackageReference "tree-sitter-kotlin" */;

CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CodeLanguages-Container/CodeLanguages-Container/CodeLanguages_Container.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ extern TSLanguage *tree_sitter_java();
3737
extern TSLanguage *tree_sitter_javascript();
3838
extern TSLanguage *tree_sitter_json();
3939
extern TSLanguage *tree_sitter_kotlin();
40+
extern TSLanguage *tree_sitter_lua();
4041
extern TSLanguage *tree_sitter_objc();
4142
extern TSLanguage *tree_sitter_ocaml();
4243
extern TSLanguage *tree_sitter_ocaml_interface();
182 KB
Binary file not shown.

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ In order to add support for additional languages we have a complete guide on how
6565
| [JSON](https://github.com/mattmassicotte/tree-sitter-json) |||
6666
| [Julia](https://github.com/tree-sitter/tree-sitter-julia) | | _not available_ |
6767
| [Kotlin](https://github.com/lukepistrol/tree-sitter-kotlin/tree/feature/spm-queries) |||
68+
| [Lua](https://github.com/lukepistrol/tree-sitter-lua/tree/feature/spm) |||
6869
| [Markdown](https://github.com/ikatyang/tree-sitter-markdown) | | _not available_ |
6970
| [Objective C](https://github.com/lukepistrol/tree-sitter-objc/tree/feature/spm) |||
7071
| [OCaml](https://github.com/cengelbart39/tree-sitter-ocaml/tree/feature/spm) |||

Sources/CodeEditLanguages/CodeLanguage+Definitions.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public extension CodeLanguage {
2727
.json,
2828
.jsx,
2929
.kotlin,
30+
.lua,
3031
.objc,
3132
.ocaml,
3233
.ocamlInterface,
@@ -154,6 +155,13 @@ public extension CodeLanguage {
154155
extensions: ["kt", "kts"]
155156
)
156157

158+
/// A language structure for `Lua`
159+
static let lua: CodeLanguage = .init(
160+
id: .lua,
161+
tsName: "lua",
162+
extensions: ["lua"]
163+
)
164+
157165
/// A language structure for `Objective C`
158166
static let objc: CodeLanguage = .init(
159167
id: .objc,

Sources/CodeEditLanguages/CodeLanguage.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ public struct CodeLanguage {
9898
return tree_sitter_javascript()
9999
case .kotlin:
100100
return tree_sitter_kotlin()
101+
case .lua:
102+
return tree_sitter_lua()
101103
case .objc:
102104
return tree_sitter_objc()
103105
case .ocaml:

Sources/CodeEditLanguages/Documentation.docc/CodeLanguage.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ let language = CodeLanguage.detectLanguageFrom(url: fileURL)
3535
- JSON
3636
- JSX
3737
- Kotlin
38+
- Lua
3839
- Objective C
3940
- OCaml / OCaml Interface
4041
- PHP
@@ -83,6 +84,7 @@ let language = CodeLanguage.detectLanguageFrom(url: fileURL)
8384
- ``json``
8485
- ``jsx``
8586
- ``kotlin``
87+
- ``lua``
8688
- ``objc``
8789
- ``php``
8890
- ``python``

Sources/CodeEditLanguages/Documentation.docc/TreeSitterModel.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ let query = TreeSitterModel.shared.swiftQuery
4848
- ``jsonQuery``
4949
- ``jsxQuery``
5050
- ``kotlinQuery``
51+
- ``luaQuery``
5152
- ``objcQuery``
5253
- ``ocamlQuery``
5354
- ``ocamlInterfaceQuery``
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
;; Keywords
2+
3+
"return" @keyword.return
4+
5+
[
6+
"goto"
7+
"in"
8+
"local"
9+
] @keyword
10+
11+
(label_statement) @label
12+
13+
(break_statement) @keyword
14+
15+
(do_statement
16+
[
17+
"do"
18+
"end"
19+
] @keyword)
20+
21+
(while_statement
22+
[
23+
"while"
24+
"do"
25+
"end"
26+
] @repeat)
27+
28+
(repeat_statement
29+
[
30+
"repeat"
31+
"until"
32+
] @repeat)
33+
34+
(if_statement
35+
[
36+
"if"
37+
"elseif"
38+
"else"
39+
"then"
40+
"end"
41+
] @conditional)
42+
43+
(elseif_statement
44+
[
45+
"elseif"
46+
"then"
47+
"end"
48+
] @conditional)
49+
50+
(else_statement
51+
[
52+
"else"
53+
"end"
54+
] @conditional)
55+
56+
(for_statement
57+
[
58+
"for"
59+
"do"
60+
"end"
61+
] @repeat)
62+
63+
(function_declaration
64+
[
65+
"function"
66+
"end"
67+
] @keyword.function)
68+
69+
(function_definition
70+
[
71+
"function"
72+
"end"
73+
] @keyword.function)
74+
75+
;; Operators
76+
77+
[
78+
"and"
79+
"not"
80+
"or"
81+
] @keyword.operator
82+
83+
[
84+
"+"
85+
"-"
86+
"*"
87+
"/"
88+
"%"
89+
"^"
90+
"#"
91+
"=="
92+
"~="
93+
"<="
94+
">="
95+
"<"
96+
">"
97+
"="
98+
"&"
99+
"~"
100+
"|"
101+
"<<"
102+
">>"
103+
"//"
104+
".."
105+
] @operator
106+
107+
;; Punctuations
108+
109+
[
110+
";"
111+
":"
112+
","
113+
"."
114+
] @punctuation.delimiter
115+
116+
;; Brackets
117+
118+
[
119+
"("
120+
")"
121+
"["
122+
"]"
123+
"{"
124+
"}"
125+
] @punctuation.bracket
126+
127+
;; Variables
128+
129+
(identifier) @variable
130+
131+
((identifier) @variable.builtin
132+
(#eq? @variable.builtin "self"))
133+
134+
(variable_list
135+
attribute: (attribute
136+
(["<" ">"] @punctuation.bracket
137+
(identifier) @attribute)))
138+
139+
;; Constants
140+
141+
((identifier) @constant
142+
(#lua-match? @constant "^[A-Z][A-Z_0-9]*$"))
143+
144+
(vararg_expression) @constant
145+
146+
(nil) @constant.builtin
147+
148+
[
149+
(false)
150+
(true)
151+
] @boolean
152+
153+
;; Tables
154+
155+
(field name: (identifier) @field)
156+
157+
(dot_index_expression field: (identifier) @field)
158+
159+
(table_constructor
160+
[
161+
"{"
162+
"}"
163+
] @constructor)
164+
165+
;; Functions
166+
167+
(parameters (identifier) @parameter)
168+
169+
(function_call name: (identifier) @function.call)
170+
(function_declaration name: (identifier) @function)
171+
172+
(function_call name: (dot_index_expression field: (identifier) @function.call))
173+
(function_declaration name: (dot_index_expression field: (identifier) @function))
174+
175+
(method_index_expression method: (identifier) @method)
176+
177+
(function_call
178+
(identifier) @function.builtin
179+
(#any-of? @function.builtin
180+
;; built-in functions in Lua 5.1
181+
"assert" "collectgarbage" "dofile" "error" "getfenv" "getmetatable" "ipairs"
182+
"load" "loadfile" "loadstring" "module" "next" "pairs" "pcall" "print"
183+
"rawequal" "rawget" "rawset" "require" "select" "setfenv" "setmetatable"
184+
"tonumber" "tostring" "type" "unpack" "xpcall"))
185+
186+
;; Others
187+
188+
(comment) @comment
189+
190+
(hash_bang_line) @preproc
191+
192+
(number) @number
193+
194+
(string) @string

0 commit comments

Comments
 (0)