ARTS 2.5.11 (git: 6827797f)
parser.h
Go to the documentation of this file.
1#ifndef parser_h
2#define parser_h
3
4#include "agenda_class.h"
5#include "methods.h"
6#include "sourcetext.h"
7#include <map>
8
9class ArtsParser {
10 public:
11 ArtsParser(Agenda& tasklist, String controlfile, const Verbosity& verbosity);
12
13 void parse_tasklist();
14
15 private:
16 using NamedArgument = struct {
17 String name;
18 Index line;
19 Index column;
20 };
21
22 using NamedArguments = vector<NamedArgument>;
23
24 void find_named_arguments(vector<NamedArgument>& named_args);
25
27
28 void at_end_of_argument(const String& argname);
29
30 void get_argument_index_by_name(Index& arg_index,
31 NamedArguments& named_args,
32 const String& name);
33
34 void parse_main();
35
36 void parse_agenda(Agenda& tasklist, const String& agenda_name);
37
38 void parse_method(Index& id,
39 ArrayOfIndex& output,
40 ArrayOfIndex& input,
41 Agenda& tasks,
42 ArrayOfIndex& auto_vars,
43 Array<TokVal>& auto_vars_values,
44 String& include_file,
45 bool no_eot = false);
46
47 void parse_generic_input(const MdRecord*& mdd,
48 Index& id,
49 String& methodname,
50 ArrayOfIndex& input,
51 ArrayOfIndex& auto_vars,
52 Array<TokVal>& auto_vars_values,
53 bool& first,
54 bool& still_supergeneric,
55 String& supergeneric_args,
56 Index& supergeneric_index,
57 NamedArguments& named_args,
58 bool call_by_name);
59
60 void parse_generic_output(const MdRecord*& mdd,
61 Index& id,
62 String& methodname,
63 ArrayOfIndex& output,
64 bool& first,
65 bool& still_supergeneric,
66 String& supergeneric_args,
67 Index& supergeneric_index,
68 NamedArguments& named_args,
69 bool call_by_name);
70
71 void parse_specific_input(const MdRecord* mdd,
72 ArrayOfIndex& input,
73 ArrayOfIndex& auto_vars,
74 Array<TokVal>& auto_vars_values,
75 bool& first,
76 NamedArguments& named_args,
77 bool call_by_name);
78
79 void parse_specific_output(const MdRecord* mdd,
80 ArrayOfIndex& output,
81 bool& first,
82 NamedArguments& named_args,
83 bool call_by_name);
84
85 void parse_method_args(const MdRecord*& mdd,
86 Index& id,
87 String& methodname,
88 ArrayOfIndex& output,
89 ArrayOfIndex& input,
90 ArrayOfIndex& auto_vars,
91 Array<TokVal>& auto_vars_values);
92
93 void use_default_method_args(const MdRecord *mdd, String &methodname,
94 ArrayOfIndex &output, ArrayOfIndex &input,
95 ArrayOfIndex &auto_vars,
96 Array<TokVal> &auto_vars_values);
97
99 ArrayOfIndex& auto_vars,
100 Array<TokVal>& auto_vars_values,
101 Index keyword_index);
102
103 void tasklist_insert_set_delete(const ArrayOfIndex& auto_vars,
104 const Array<TokVal>& auto_vars_values,
105 const Index method_type,
106 Agenda& tasklist);
107
108 bool is_whitespace(const char c);
109
110 void eat_whitespace();
111
112 void eat_whitespace_from_string(String& str, size_t& pos);
113
114 void read_name(String& name);
115
116 Index read_name_or_value(String& name,
117 ArrayOfIndex& auto_vars,
118 Array<TokVal>& auto_vars_values,
119 const String& default_name,
120 const MdRecord* mdd,
121 const Index group);
122
123 void assertain_character(char c);
124
125 void parse_String(String& res);
126
127 void read_integer(String& res);
128
129 void read_numeric(String& res);
130
131 void parse_integer(Index& n);
132
133 void parse_numeric(Numeric& n);
134
136
137 void parse_intvector(ArrayOfIndex& res);
138
139 void parse_numvector(Vector& res);
140
141 void parse_matrix(Matrix& res);
142
144
145 bool parse_numvector_from_string(Vector& res, String& str);
146
148
150
151 std::shared_ptr<Workspace> ws;
152
154
156
158
160};
161
162#endif /* parser_h */
Declarations for agendas.
The Agenda class.
Definition: agenda_class.h:52
bool parse_stringarray_from_string(ArrayOfString &res, String &str)
Read an Array of Strings from a String.
Definition: parser.cc:2440
void parse_specific_output(const MdRecord *mdd, ArrayOfIndex &output, bool &first, NamedArguments &named_args, bool call_by_name)
Parse the output WSVs for current method from the controlfile.
Definition: parser.cc:1455
const Verbosity & verbosity
Definition: parser.h:159
void parse_numeric(Numeric &n)
Use a String stream to parse a floating point number.
Definition: parser.cc:2066
vector< NamedArgument > NamedArguments
Definition: parser.h:22
void parse_tasklist()
Public interface to the main function of the parser.
Definition: parser.cc:37
void read_name(String &name)
Reads name of method, keyword, or workspace variable.
Definition: parser.cc:1705
void tasklist_insert_set_delete(const ArrayOfIndex &auto_vars, const Array< TokVal > &auto_vars_values, const Index method_type, Agenda &tasklist)
Insert Set and Delete methods for automatically allocated output WSVs.
Definition: parser.cc:1562
void parse_generic_input(const MdRecord *&mdd, Index &id, String &methodname, ArrayOfIndex &input, ArrayOfIndex &auto_vars, Array< TokVal > &auto_vars_values, bool &first, bool &still_supergeneric, String &supergeneric_args, Index &supergeneric_index, NamedArguments &named_args, bool call_by_name)
Parse the generic input WSVs for current method from the controlfile.
Definition: parser.cc:968
Agenda & mtasklist
Definition: parser.h:149
String mcfile
Definition: parser.h:153
void parse_Stringvector(ArrayOfString &res)
Read a vector of Strings.
Definition: parser.cc:2087
void parse_integer(Index &n)
Use a String stream to parse an integer number.
Definition: parser.cc:2055
void skip_to_next_argument()
Skips forward to the next argument.
Definition: parser.cc:78
void assertain_character(char c)
Make sure that the current character is equal to c and go to the next character.
Definition: parser.cc:1842
SourceText msource
Definition: parser.h:155
void parse_specific_input(const MdRecord *mdd, ArrayOfIndex &input, ArrayOfIndex &auto_vars, Array< TokVal > &auto_vars_values, bool &first, NamedArguments &named_args, bool call_by_name)
Parse the specific input WSVs for current method from the controlfile.
Definition: parser.cc:1355
std::shared_ptr< Workspace > ws
Definition: parser.h:151
{ String name NamedArgument
Definition: parser.h:17
Index read_name_or_value(String &name, ArrayOfIndex &auto_vars, Array< TokVal > &auto_vars_values, const String &default_name, const MdRecord *mdd, const Index group)
Reads name of a workspace variable or a value.
Definition: parser.cc:1750
void find_named_arguments(vector< NamedArgument > &named_args)
Find named arguments.
Definition: parser.cc:47
bool parse_intvector_from_string(ArrayOfIndex &res, String &str)
Read an array of integers from a String.
Definition: parser.cc:2311
bool parse_numvector_from_string(Vector &res, String &str)
Read a vector of Numerics from a String.
Definition: parser.cc:2373
void use_default_method_args(const MdRecord *mdd, String &methodname, ArrayOfIndex &output, ArrayOfIndex &input, ArrayOfIndex &auto_vars, Array< TokVal > &auto_vars_values)
Set defaults if method is called without any arguments.
Definition: parser.cc:888
bool is_whitespace(const char c)
Returns true if this character is considered whitespace.
Definition: parser.cc:1639
Index line
Definition: parser.h:18
void parse_method(Index &id, ArrayOfIndex &output, ArrayOfIndex &input, Agenda &tasks, ArrayOfIndex &auto_vars, Array< TokVal > &auto_vars_values, String &include_file, bool no_eot=false)
Parse the Contents of text as ARTS control input.
Definition: parser.cc:483
void eat_whitespace_from_string(String &str, size_t &pos)
Eats whitespace from a String.
Definition: parser.cc:1690
String set_gin_to_default(const MdRecord *mdd, ArrayOfIndex &auto_vars, Array< TokVal > &auto_vars_values, Index keyword_index)
Set generic input to default value.
Definition: parser.cc:590
void parse_agenda(Agenda &tasklist, const String &agenda_name)
Parse the Contents of text as ARTS control input.
Definition: parser.cc:320
void eat_whitespace()
Eats whitespace.
Definition: parser.cc:1661
void parse_main()
The main function of the parser.
Definition: parser.cc:171
void parse_String(String &res)
Reads a String, complete with quotation marks.
Definition: parser.cc:1863
void read_numeric(String &res)
Reads a floating point number.
Definition: parser.cc:1957
void parse_method_args(const MdRecord *&mdd, Index &id, String &methodname, ArrayOfIndex &output, ArrayOfIndex &input, ArrayOfIndex &auto_vars, Array< TokVal > &auto_vars_values)
Parse method's argument list.
Definition: parser.cc:745
void parse_generic_output(const MdRecord *&mdd, Index &id, String &methodname, ArrayOfIndex &output, bool &first, bool &still_supergeneric, String &supergeneric_args, Index &supergeneric_index, NamedArguments &named_args, bool call_by_name)
Parse the generic output WSVs for current method from the controlfile.
Definition: parser.cc:1154
void parse_numvector(Vector &res)
Read a vector of Numerics.
Definition: parser.cc:2169
void read_integer(String &res)
Reads an integer.
Definition: parser.cc:1905
void parse_intvector(ArrayOfIndex &res)
Read a vector of integers.
Definition: parser.cc:2128
void parse_matrix(Matrix &res)
Read a Matrix.
Definition: parser.cc:2220
void at_end_of_argument(const String &argname)
Check if current position in controlfile is at the end of an argument.
Definition: parser.cc:141
Index mcfile_version
Definition: parser.h:157
void get_argument_index_by_name(Index &arg_index, NamedArguments &named_args, const String &name)
Return the index of the argument with the given name.
Definition: parser.cc:156
Index column
Definition: parser.h:19
All information for one workspace method.
Definition: methods.h:21
A smart class to hold the text for parsing.
Definition: sourcetext.h:19
Declaration of the class MdRecord.
#define c