From 150a481100bba025bc5132338ae3d37f19de5bfc Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sun, 6 Mar 2016 22:07:41 +0800 Subject: Move macro_rules parsing and expansion to expand/synexts --- src/ast/ast.cpp | 2 +- src/ast/ast.hpp | 3 +++ src/ast/macro.hpp | 12 ++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) (limited to 'src/ast') diff --git a/src/ast/ast.cpp b/src/ast/ast.cpp index 33741397..a413c64e 100644 --- a/src/ast/ast.cpp +++ b/src/ast/ast.cpp @@ -345,7 +345,7 @@ template typename ::std::vector >::const_iterator find_named(const ::std::vector >& vec, const ::std::string& name) { return ::std::find_if(vec.begin(), vec.end(), [&name](const Named& x) { - DEBUG("find_named - x.name = " << x.name); + //DEBUG("find_named - x.name = " << x.name); return x.name == name; }); } diff --git a/src/ast/ast.hpp b/src/ast/ast.hpp index 9eba0307..ea518eab 100644 --- a/src/ast/ast.hpp +++ b/src/ast/ast.hpp @@ -435,6 +435,8 @@ public: void add_macro_invocation(MacroInvocation item) { m_macro_invocations.push_back( mv$(item) ); } + + unsigned int add_anon_module(Module* mod_ptr) { auto it = ::std::find(m_anon_modules.begin(), m_anon_modules.end(), mod_ptr); @@ -505,6 +507,7 @@ public: const ::std::vector& anon_mods() const { return m_anon_modules; } + ::std::vector& macro_invs() { return m_macro_invocations; } const NamedList& macros() const { return m_macros; } const ::std::vector > macro_imports_res() const { return m_macro_import_res; } diff --git a/src/ast/macro.hpp b/src/ast/macro.hpp index d80db7bf..4696c732 100644 --- a/src/ast/macro.hpp +++ b/src/ast/macro.hpp @@ -33,6 +33,18 @@ public: return ::std::unique_ptr(i); } + void clear() { + m_macro_name = ""; + m_ident = ""; + m_input = TokenTree(); + } + + const ::std::string& name() const { return m_macro_name; } + + const ::std::string& input_ident() const { return m_ident; } + const TokenTree& input_tt() const { return m_input; } + + SERIALISABLE_PROTOTYPES(); friend ::std::ostream& operator<<(::std::ostream& os, const MacroInvocation& x) { -- cgit v1.2.3