blob: d860aaa36ca65f2f5483064f51897fcbb7cd409e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#include <synext.hpp>
#include "../ast/expr.hpp"
#include "../ast/ast.hpp"
#include "../parse/common.hpp"
class CMacroRulesExpander:
public ExpandProcMacro
{
bool expand_early() const override { return true; }
AST::Expr expand(const ::std::string& ident, const TokenTree& tt, AST::Module& mod, MacroPosition position)
{
if( ident == "" ) {
throw ::std::runtime_error( "ERROR: macro_rules! requires an identifier" );
}
TTStream lex(tt);
auto mac = Parse_MacroRules(lex);
// TODO: Place into current module using `ident` as the name
return AST::Expr();
}
};
STATIC_MACRO("macro_rules", CMacroRulesExpander);
|