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