summaryrefslogtreecommitdiff
path: root/cli/parser.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2012-05-10 11:09:13 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2012-05-10 11:09:13 +0200
commit4f9022f24c4591391637121c7274d9855b37bd93 (patch)
tree55d15cf4c092e28c588c31daf118cac7b4b5910a /cli/parser.hxx
parent963eaef32dc1b35bd065de8b62d4c73a932208b2 (diff)
Add support for options file inclusion
New include-path prefixes, c++: and cli:, are now recognized (e.g., include <cli:foo>;). Without a prefix, the include declarations is considered to be c++-include unless the path ends with the .cli extension. The cli-included files are loaded and parsed. Currently, only inclusion relative to the current file is supported. Duplicate inclusions are detected and ignored based on the absolute filesystem path. If a file cli-includes another file, then the runtime code is assumed to come from the included file and is not generated.
Diffstat (limited to 'cli/parser.hxx')
-rw-r--r--cli/parser.hxx7
1 files changed, 6 insertions, 1 deletions
diff --git a/cli/parser.hxx b/cli/parser.hxx
index 4e6c18f..c93b9a0 100644
--- a/cli/parser.hxx
+++ b/cli/parser.hxx
@@ -6,6 +6,7 @@
#ifndef CLI_PARSER_HXX
#define CLI_PARSER_HXX
+#include <map>
#include <string>
#include <memory> // std::auto_ptr
#include <istream>
@@ -61,8 +62,12 @@ private:
lexer* lexer_;
- semantics::cli_unit* unit_;
+ semantics::cli_unit* root_;
+ semantics::cli_unit* cur_;
semantics::scope* scope_;
+
+ typedef std::map<semantics::path, semantics::cli_unit*> include_map;
+ include_map include_map_;
};
#endif // CLI_PARSER_HXX