Adobe Source Libraries 1.49.0
A collection of C++ libraries.
Loading...
Searching...
No Matches
adam_parser.hpp
Go to the documentation of this file.
1/*
2 Copyright 2013 Adobe
3 Distributed under the Boost Software License, Version 1.0.
4 (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5*/
6/**************************************************************************************************/
7
8#ifndef ADOBE_ADAM_PARSER_HPP
9#define ADOBE_ADAM_PARSER_HPP
10
11#include <adobe/config.hpp>
12
13#include <functional>
14#include <iosfwd>
15#include <string>
16#include <vector>
17
18#include <adobe/array.hpp>
19#include <adobe/istream.hpp>
20#include <adobe/string.hpp>
21
123
124
125/**************************************************************************************************/
126
127namespace adobe {
128
129/**************************************************************************************************/
130
133 input_k, // array_t is an initializer
134 output_k, // array_t is an expression
135 constant_k, // array_t is an initializer
136 logic_k, // array_t is an expression
137 invariant_k // array_t is an expression
138 };
139
140 struct relation_t {
141 std::vector<name_t> name_set_m;
144 std::string detailed_m;
145 std::string brief_m;
146 };
147
148 using add_cell_proc_t = std::function<void(
149 cell_type_t type, name_t cell_name, const line_position_t& position,
150 const array_t& expr_or_init, const std::string& brief, const std::string& detailed)>;
151
152 using add_relation_proc_t = std::function<void(
153 const line_position_t& position, const array_t& conditional, const relation_t* first,
154 const relation_t* last, const std::string& brief,
155 const std::string& detailed)>; // REVISIT (sparent) where's brief?
156
157 using add_interface_proc_t = std::function<void(
158 name_t cell_name, bool linked, const line_position_t& position1, const array_t& initializer,
159 const line_position_t& position2, const array_t& expression, const std::string& brief,
160 const std::string& detailed)>;
161
162 using add_external_proc_t = std::function<void(
163 name_t cell_name, const line_position_t& position,
164 const std::string& brief, const std::string& detailed)>;
165
170};
171
172/**************************************************************************************************/
173
174void parse(std::istream& stream, const line_position_t& position,
175 const adam_callback_suite_t& callbacks);
176
177/**************************************************************************************************/
178
179array_t parse_adam_expression(const std::string& expression);
180
181/**************************************************************************************************/
182
183} // namespace adobe
184
185/**************************************************************************************************/
186
187#endif // ADOBE_ADAM_PARSER_HPP
188
189/**************************************************************************************************/
void parse(std::istream &stream, const line_position_t &position, const adam_callback_suite_t &callbacks)
array_t parse_adam_expression(const std::string &expression)
std::vector< any_regular_t > array_t
Definition array_fwd.hpp:23
Struct containing details of a relation expression for client callbacks from the Adam parser.
Callback class for the Adam parser.
std::function< void( cell_type_t type, name_t cell_name, const line_position_t &position, const array_t &expr_or_init, const std::string &brief, const std::string &detailed)> add_cell_proc_t
add_relation_proc_t add_relation_proc_m
std::function< void( const line_position_t &position, const array_t &conditional, const relation_t *first, const relation_t *last, const std::string &brief, const std::string &detailed)> add_relation_proc_t
std::function< void( name_t cell_name, bool linked, const line_position_t &position1, const array_t &initializer, const line_position_t &position2, const array_t &expression, const std::string &brief, const std::string &detailed)> add_interface_proc_t
add_interface_proc_t add_interface_proc_m
add_external_proc_t add_external_proc_m
std::function< void( name_t cell_name, const line_position_t &position, const std::string &brief, const std::string &detailed)> add_external_proc_t
A type detailing parser position information.
Definition istream.hpp:127
A character string class for immutable strings.
Definition name.hpp:220