mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
gen-zam: generate descriptions of macros, akin to those already generated for operations
This commit is contained in:
parent
12bb2a04eb
commit
53591cf205
2 changed files with 24 additions and 3 deletions
|
@ -980,7 +980,7 @@ void ZAM_OpTemplate::GenDesc(const string& op_code, const string& oc_str, const
|
||||||
|
|
||||||
void ZAM_OpTemplate::StartDesc(const string& op_code, const string& oc_str)
|
void ZAM_OpTemplate::StartDesc(const string& op_code, const string& oc_str)
|
||||||
{
|
{
|
||||||
EmitTo(Desc);
|
EmitTo(OpDesc);
|
||||||
Emit("{ " + op_code + ",");
|
Emit("{ " + op_code + ",");
|
||||||
BeginBlock();
|
BeginBlock();
|
||||||
Emit("\"" + oc_str + "\",");
|
Emit("\"" + oc_str + "\",");
|
||||||
|
@ -2476,10 +2476,27 @@ void ZAMGen::GenMacros()
|
||||||
{
|
{
|
||||||
auto ms = m[i];
|
auto ms = m[i];
|
||||||
if ( i == 0 )
|
if ( i == 0 )
|
||||||
|
{
|
||||||
|
auto name = regex_replace(ms, regex("[( ].*\n"), "");
|
||||||
|
Emit(MacroDesc, "{ \"" + name + "\",");
|
||||||
|
|
||||||
ms = "#define " + ms;
|
ms = "#define " + ms;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto desc = ms;
|
||||||
|
desc.erase(desc.find('\n'));
|
||||||
|
desc = regex_replace(desc, regex("\\\\"), "\\\\");
|
||||||
|
desc = regex_replace(desc, regex("\""), "\\\"");
|
||||||
|
|
||||||
if ( i < m.size() - 1 )
|
if ( i < m.size() - 1 )
|
||||||
|
{
|
||||||
ms = regex_replace(ms, regex("\n"), " \\\n");
|
ms = regex_replace(ms, regex("\n"), " \\\n");
|
||||||
|
desc.append(" \\\\\\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
Emit(MacroDesc, " \"" + desc + "\"");
|
||||||
|
if ( i == m.size() - 1 )
|
||||||
|
Emit(MacroDesc, "},");
|
||||||
|
|
||||||
Emit(EvalMacros, ms);
|
Emit(EvalMacros, ms);
|
||||||
}
|
}
|
||||||
|
@ -2580,14 +2597,15 @@ void ZAMGen::InitEmitTargets()
|
||||||
{C2FieldDef, "ZAM-GenFieldsDefsC2.h"},
|
{C2FieldDef, "ZAM-GenFieldsDefsC2.h"},
|
||||||
{C3Def, "ZAM-GenExprsDefsC3.h"},
|
{C3Def, "ZAM-GenExprsDefsC3.h"},
|
||||||
{Cond, "ZAM-Conds.h"},
|
{Cond, "ZAM-Conds.h"},
|
||||||
{Desc, "ZAM-Desc.h"},
|
|
||||||
{DirectDef, "ZAM-DirectDefs.h"},
|
{DirectDef, "ZAM-DirectDefs.h"},
|
||||||
{Eval, "ZAM-EvalDefs.h"},
|
{Eval, "ZAM-EvalDefs.h"},
|
||||||
{EvalMacros, "ZAM-EvalMacros.h"},
|
{EvalMacros, "ZAM-EvalMacros.h"},
|
||||||
|
{MacroDesc, "ZAM-MacroDesc.h"},
|
||||||
{MethodDecl, "ZAM-MethodDecls.h"},
|
{MethodDecl, "ZAM-MethodDecls.h"},
|
||||||
{MethodDef, "ZAM-MethodDefs.h"},
|
{MethodDef, "ZAM-MethodDefs.h"},
|
||||||
{Op1Flavor, "ZAM-Op1FlavorsDefs.h"},
|
{Op1Flavor, "ZAM-Op1FlavorsDefs.h"},
|
||||||
{OpDef, "ZAM-OpsDefs.h"},
|
{OpDef, "ZAM-OpsDefs.h"},
|
||||||
|
{OpDesc, "ZAM-OpDesc.h"},
|
||||||
{OpName, "ZAM-OpsNamesDefs.h"},
|
{OpName, "ZAM-OpsNamesDefs.h"},
|
||||||
{OpSideEffects, "ZAM-OpSideEffects.h"},
|
{OpSideEffects, "ZAM-OpSideEffects.h"},
|
||||||
{VDef, "ZAM-GenExprsDefsV.h"},
|
{VDef, "ZAM-GenExprsDefsV.h"},
|
||||||
|
|
|
@ -144,7 +144,10 @@ enum EmitTarget
|
||||||
Cond,
|
Cond,
|
||||||
|
|
||||||
// Descriptions of final ZAM operations, used for validation.
|
// Descriptions of final ZAM operations, used for validation.
|
||||||
Desc,
|
OpDesc,
|
||||||
|
|
||||||
|
// The same, for macros.
|
||||||
|
MacroDesc,
|
||||||
|
|
||||||
// Switch cases that provide the C++ code for executing specific
|
// Switch cases that provide the C++ code for executing specific
|
||||||
// individual ZAM instructions.
|
// individual ZAM instructions.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue