SourceForge.net Logo
InputParser.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2001, 2008,
3  * DecisionSoft Limited. All rights reserved.
4  * Copyright (c) 2004, 2018 Oracle and/or its affiliates. All rights reserved.
5  *
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 
20 #ifndef __INPUTPARSER_HPP
21 #define __INPUTPARSER_HPP
22 
23 #include <vector>
24 #include <string>
25 #include <istream>
26 
27 #include <xqilla/framework/XQillaExport.hpp>
28 
29 class XQILLA_API InputParser
30 {
31 public:
32  typedef std::vector<std::string> Args;
33 
34  int parse(std::istream &input, Args &args);
35 
36 private:
37  void reset();
38  void whitespace(Args &args);
39  void character();
40  void escapedCharacter();
41  bool inQuotes();
42  void quote(Args &args, char c);
43  void openCurly();
44  void closeCurly();
45  void endOfArg(Args &args);
46  void addArgument(Args &args, std::string::size_type start, std::string::size_type end);
47  void nextLine(std::istream &input, Args &args);
48 
49  std::string line_;
50  std::string::size_type start_, pos_;
51  char quoteChar_;
52  int curlyBraceDepth_;
53  bool seenNonWS_;
54  bool stripQuotes_;
55 };
56 
57 #endif
Definition: InputParser.hpp:29
std::vector< std::string > Args
Definition: InputParser.hpp:32