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:any_invocable" ,
28+ "@com_google_absl//absl/types:span" ,
29+ ],
30+ )
31+
32+ cc_library (
33+ name = "ast_factory" ,
34+ hdrs = ["ast_factory.h" ],
35+ deps = [
36+ ":ast_factory_interface" ,
37+ "//common:constant" ,
38+ "//common:expr" ,
39+ "//common:expr_factory" ,
40+ "//parser:macro" ,
41+ "//parser:macro_expr_factory" ,
42+ "//parser:macro_registry" ,
43+ "@com_google_absl//absl/base:nullability" ,
44+ "@com_google_absl//absl/functional:any_invocable" ,
45+ "@com_google_absl//absl/strings:string_view" ,
46+ "@com_google_absl//absl/types:span" ,
47+ ],
48+ )
49+
2250cc_library (
2351 name = "options" ,
2452 hdrs = ["options.h" ],
@@ -29,3 +57,143 @@ antlr_cc_library(
2957 src = "Cel.g4" ,
3058 package = "cel_parser_internal" ,
3159)
60+
61+ cc_library (
62+ name = "lexer" ,
63+ srcs = ["lexer.cc" ],
64+ hdrs = ["lexer.h" ],
65+ deps = [
66+ "@com_google_absl//absl/base:core_headers" ,
67+ "@com_google_absl//absl/base:no_destructor" ,
68+ "@com_google_absl//absl/base:nullability" ,
69+ "@com_google_absl//absl/container:flat_hash_map" ,
70+ "@com_google_absl//absl/functional:function_ref" ,
71+ "@com_google_absl//absl/log:absl_check" ,
72+ "@com_google_absl//absl/strings" ,
73+ "@com_google_absl//absl/strings:string_view" ,
74+ ],
75+ )
76+
77+ cc_library (
78+ name = "pratt_parser_worker" ,
79+ srcs = ["pratt_parser_worker.cc" ],
80+ hdrs = ["pratt_parser_worker.h" ],
81+ deps = [
82+ ":ast_factory_interface" ,
83+ ":lexer" ,
84+ "//common:operators" ,
85+ "//common:source" ,
86+ "//internal:lexis" ,
87+ "//internal:strings" ,
88+ "//parser:macro_expr_factory" ,
89+ "//parser:macro_registry" ,
90+ "//parser:options" ,
91+ "//parser:parser_interface" ,
92+ "@com_google_absl//absl/base:nullability" ,
93+ "@com_google_absl//absl/container:flat_hash_map" ,
94+ "@com_google_absl//absl/log:absl_check" ,
95+ "@com_google_absl//absl/status:statusor" ,
96+ "@com_google_absl//absl/strings" ,
97+ "@com_google_absl//absl/strings:str_format" ,
98+ "@com_google_absl//absl/types:optional" ,
99+ "@com_google_absl//absl/types:span" ,
100+ ],
101+ )
102+
103+ cc_library (
104+ name = "pratt_parser" ,
105+ srcs = ["pratt_parser.cc" ],
106+ hdrs = ["pratt_parser.h" ],
107+ deps = [
108+ ":ast_factory" ,
109+ ":pratt_parser_worker" ,
110+ "//common:ast" ,
111+ "//common:expr" ,
112+ "//common:source" ,
113+ "//internal:status_macros" ,
114+ "//parser:macro" ,
115+ "//parser:macro_registry" ,
116+ "//parser:options" ,
117+ "//parser:parser_interface" ,
118+ "@com_google_absl//absl/base:nullability" ,
119+ "@com_google_absl//absl/cleanup" ,
120+ "@com_google_absl//absl/container:flat_hash_map" ,
121+ "@com_google_absl//absl/container:flat_hash_set" ,
122+ "@com_google_absl//absl/status" ,
123+ "@com_google_absl//absl/status:statusor" ,
124+ "@com_google_absl//absl/strings" ,
125+ "@com_google_absl//absl/strings:str_format" ,
126+ "@com_google_absl//absl/types:span" ,
127+ ],
128+ )
129+
130+ cc_test (
131+ name = "ast_factory_test" ,
132+ srcs = ["ast_factory_test.cc" ],
133+ deps = [
134+ ":ast_factory" ,
135+ ":ast_factory_interface" ,
136+ "//common:constant" ,
137+ "//common:expr" ,
138+ "//internal:testing" ,
139+ "//parser:macro" ,
140+ "//parser:macro_expr_factory" ,
141+ "//parser:macro_registry" ,
142+ "@com_google_absl//absl/strings:string_view" ,
143+ "@com_google_absl//absl/types:span" ,
144+ ],
145+ )
146+
147+ cc_test (
148+ name = "lexer_test" ,
149+ srcs = ["lexer_test.cc" ],
150+ deps = [
151+ ":lexer" ,
152+ "//internal:testing" ,
153+ ],
154+ )
155+
156+ cc_test (
157+ name = "pratt_parser_test" ,
158+ srcs = ["pratt_parser_test.cc" ],
159+ deps = [
160+ ":lexer" ,
161+ ":pratt_parser" ,
162+ ":pratt_parser_worker" ,
163+ "//common:ast" ,
164+ "//common:constant" ,
165+ "//common:expr" ,
166+ "//common:source" ,
167+ "//internal:status_macros" ,
168+ "//internal:testing" ,
169+ "//parser:macro" ,
170+ "//parser:macro_expr_factory" ,
171+ "//parser:options" ,
172+ "//parser:parser_interface" ,
173+ "//testutil:expr_printer" ,
174+ "@com_google_absl//absl/status" ,
175+ "@com_google_absl//absl/status:status_matchers" ,
176+ "@com_google_absl//absl/status:statusor" ,
177+ "@com_google_absl//absl/strings" ,
178+ "@com_google_absl//absl/strings:str_format" ,
179+ "@com_google_absl//absl/strings:string_view" ,
180+ "@com_google_absl//absl/types:span" ,
181+ ],
182+ )
183+
184+ cc_test (
185+ name = "pratt_parser_benchmark" ,
186+ srcs = ["pratt_parser_benchmark.cc" ],
187+ tags = ["benchmark" ],
188+ deps = [
189+ ":pratt_parser" ,
190+ "//common:source" ,
191+ "//internal:benchmark" ,
192+ "//internal:testing" ,
193+ "//parser" ,
194+ "//parser:options" ,
195+ "//parser:parser_interface" ,
196+ "@com_google_absl//absl/log:absl_check" ,
197+ "@com_google_absl//absl/strings" ,
198+ ],
199+ )
0 commit comments