1313# limitations under the License.
1414
1515load ("@rules_cc//cc:cc_library.bzl" , "cc_library" )
16+ load ("@rules_cc//cc:cc_test.bzl" , "cc_test" )
1617load ("//bazel:antlr.bzl" , "antlr_cc_library" )
1718
1819package (default_visibility = ["//visibility:public" ])
1920
2021licenses (["notice" ])
2122
23+ cc_library (
24+ name = "ast_factory_interface" ,
25+ hdrs = ["ast_factory_interface.h" ],
26+ deps = [
27+ "@com_google_absl//absl/functional:function_ref" ,
28+ "@com_google_absl//absl/status:statusor" ,
29+ "@com_google_absl//absl/types:span" ,
30+ ],
31+ )
32+
33+ cc_library (
34+ name = "ast_factory" ,
35+ srcs = ["ast_factory.cc" ],
36+ hdrs = ["ast_factory.h" ],
37+ deps = [
38+ ":ast_factory_interface" ,
39+ "//common:expr" ,
40+ "//common:expr_factory" ,
41+ "//internal:status_macros" ,
42+ "//parser:macro" ,
43+ "//parser:macro_expr_factory" ,
44+ "//parser:macro_registry" ,
45+ "@com_google_absl//absl/base:nullability" ,
46+ "@com_google_absl//absl/functional:function_ref" ,
47+ "@com_google_absl//absl/status" ,
48+ "@com_google_absl//absl/status:statusor" ,
49+ "@com_google_absl//absl/strings:string_view" ,
50+ "@com_google_absl//absl/types:span" ,
51+ ],
52+ )
53+
2254cc_library (
2355 name = "options" ,
2456 hdrs = ["options.h" ],
@@ -29,3 +61,148 @@ antlr_cc_library(
2961 src = "Cel.g4" ,
3062 package = "cel_parser_internal" ,
3163)
64+
65+ cc_library (
66+ name = "lexer" ,
67+ srcs = ["lexer.cc" ],
68+ hdrs = ["lexer.h" ],
69+ deps = [
70+ "//common:source" ,
71+ "@com_google_absl//absl/base:core_headers" ,
72+ "@com_google_absl//absl/base:no_destructor" ,
73+ "@com_google_absl//absl/container:flat_hash_map" ,
74+ "@com_google_absl//absl/functional:function_ref" ,
75+ "@com_google_absl//absl/log:absl_check" ,
76+ "@com_google_absl//absl/strings" ,
77+ "@com_google_absl//absl/strings:string_view" ,
78+ ],
79+ )
80+
81+ cc_library (
82+ name = "pratt_parser_worker" ,
83+ srcs = ["pratt_parser_worker.cc" ],
84+ hdrs = ["pratt_parser_worker.h" ],
85+ deps = [
86+ ":ast_factory_interface" ,
87+ ":lexer" ,
88+ "//common:operators" ,
89+ "//common:source" ,
90+ "//internal:lexis" ,
91+ "//internal:strings" ,
92+ "//parser:options" ,
93+ "//parser:parser_interface" ,
94+ "@com_google_absl//absl/base:core_headers" ,
95+ "@com_google_absl//absl/base:nullability" ,
96+ "@com_google_absl//absl/container:flat_hash_map" ,
97+ "@com_google_absl//absl/status:statusor" ,
98+ "@com_google_absl//absl/strings" ,
99+ "@com_google_absl//absl/strings:str_format" ,
100+ "@com_google_absl//absl/types:optional" ,
101+ "@com_google_absl//absl/types:span" ,
102+ ],
103+ )
104+
105+ cc_library (
106+ name = "pratt_parser" ,
107+ srcs = ["pratt_parser.cc" ],
108+ hdrs = ["pratt_parser.h" ],
109+ deps = [
110+ ":ast_factory" ,
111+ ":pratt_parser_worker" ,
112+ "//common:ast" ,
113+ "//common:expr" ,
114+ "//common:source" ,
115+ "//internal:status_macros" ,
116+ "//parser:macro" ,
117+ "//parser:macro_registry" ,
118+ "//parser:options" ,
119+ "//parser:parser_interface" ,
120+ "@com_google_absl//absl/base:nullability" ,
121+ "@com_google_absl//absl/cleanup" ,
122+ "@com_google_absl//absl/container:flat_hash_map" ,
123+ "@com_google_absl//absl/container:flat_hash_set" ,
124+ "@com_google_absl//absl/status" ,
125+ "@com_google_absl//absl/status:statusor" ,
126+ "@com_google_absl//absl/strings" ,
127+ "@com_google_absl//absl/strings:str_format" ,
128+ "@com_google_absl//absl/types:span" ,
129+ ],
130+ )
131+
132+ cc_test (
133+ name = "ast_factory_test" ,
134+ srcs = ["ast_factory_test.cc" ],
135+ deps = [
136+ ":ast_factory" ,
137+ ":ast_factory_interface" ,
138+ "//common:constant" ,
139+ "//common:expr" ,
140+ "//internal:testing" ,
141+ "//parser:macro" ,
142+ "//parser:macro_expr_factory" ,
143+ "//parser:macro_registry" ,
144+ "@com_google_absl//absl/status" ,
145+ "@com_google_absl//absl/status:status_matchers" ,
146+ "@com_google_absl//absl/strings:string_view" ,
147+ "@com_google_absl//absl/types:span" ,
148+ ],
149+ )
150+
151+ cc_test (
152+ name = "lexer_test" ,
153+ srcs = ["lexer_test.cc" ],
154+ deps = [
155+ ":lexer" ,
156+ "//common:source" ,
157+ "//internal:testing" ,
158+ ],
159+ )
160+
161+ cc_test (
162+ name = "pratt_parser_test" ,
163+ srcs = ["pratt_parser_test.cc" ],
164+ deps = [
165+ ":lexer" ,
166+ ":pratt_parser" ,
167+ ":pratt_parser_worker" ,
168+ "//common:ast" ,
169+ "//common:constant" ,
170+ "//common:expr" ,
171+ "//common:source" ,
172+ "//internal:status_macros" ,
173+ "//internal:testing" ,
174+ "//parser:macro" ,
175+ "//parser:macro_expr_factory" ,
176+ "//parser:options" ,
177+ "//parser:parser_interface" ,
178+ "//testutil:expr_printer" ,
179+ "//thread/fiber" ,
180+ "//thread/fiber:fiber-options" ,
181+ "@com_google_absl//absl/algorithm:container" ,
182+ "@com_google_absl//absl/log:absl_log" ,
183+ "@com_google_absl//absl/status" ,
184+ "@com_google_absl//absl/status:status_matchers" ,
185+ "@com_google_absl//absl/status:statusor" ,
186+ "@com_google_absl//absl/strings" ,
187+ "@com_google_absl//absl/strings:str_format" ,
188+ "@com_google_absl//absl/strings:string_view" ,
189+ "@com_google_absl//absl/types:span" ,
190+ ],
191+ )
192+
193+ cc_test (
194+ name = "pratt_parser_benchmark" ,
195+ srcs = ["pratt_parser_benchmark.cc" ],
196+ tags = ["benchmark" ],
197+ deps = [
198+ ":pratt_parser" ,
199+ "//common:source" ,
200+ "//internal:benchmark" ,
201+ "//internal:testing" ,
202+ "//parser" ,
203+ "//parser:options" ,
204+ "//parser:parser_interface" ,
205+ "@com_google_absl//absl/log:absl_check" ,
206+ "@com_google_absl//absl/strings" ,
207+ ],
208+ )
0 commit comments