/// recovery.
virtual void EatToEndOfStatement() = 0;
+ /// Control a flag in the parser that enables or disables macros.
+ virtual bool MacrosEnabled() = 0;
+ virtual void SetMacrosEnabled(bool flag) = 0;
+
/// ParseExpression - Parse an arbitrary expression.
///
/// @param Res - The value of the expression. The result is undefined
std::vector<MacroInstantiation*> ActiveMacros;
/// Boolean tracking whether macro substitution is enabled.
- unsigned MacrosEnabled : 1;
+ unsigned MacrosEnabledFlag : 1;
/// Flag tracking whether any errors have been encountered.
unsigned HadError : 1;
virtual bool ParseIdentifier(StringRef &Res);
virtual void EatToEndOfStatement();
+ virtual bool MacrosEnabled() {return MacrosEnabledFlag;}
+ virtual void SetMacrosEnabled(bool flag) {MacrosEnabledFlag = flag;}
+
/// }
private:
MCStreamer &_Out, const MCAsmInfo &_MAI)
: Lexer(_MAI), Ctx(_Ctx), Out(_Out), MAI(_MAI), SrcMgr(_SM),
GenericParser(new GenericAsmParser), PlatformParser(0),
- CurBuffer(0), MacrosEnabled(true), CppHashLineNumber(0),
+ CurBuffer(0), MacrosEnabledFlag(true), CppHashLineNumber(0),
AssemblerDialect(~0U), IsDarwin(false), ParsingInlineAsm(false) {
// Save the old handler.
SavedDiagHandler = SrcMgr.getDiagHandler();
}
// If macros are enabled, check to see if this is a macro instantiation.
- if (MacrosEnabled)
+ if (MacrosEnabled())
if (const Macro *M = MacroMap.lookup(IDVal))
return HandleMacroEntry(IDVal, IDLoc, M);
return Error(getLexer().getLoc(),
"unexpected token in '" + Directive + "' directive");
- getParser().MacrosEnabled = Directive == ".macros_on";
+ getParser().SetMacrosEnabled(Directive == ".macros_on");
return false;
}