void
nsSecurityHeaderParser::Header()
{
  Directive();
  while (Accept(';')) {
    Directive();
  }
}
Esempio n. 2
0
Directive OPCodes::getDirective(string code, int numReserved)
{
	if (code == "START")		{ return Directive(code, 0); }
	else if (code == "BYTE")	{ return Directive(code, 1); }
	else if (code == "WORD")	{ return Directive(code, 3); }
	else if (code == "RESB")	{ return Directive(code, 1 * numReserved); }
	else if (code == "RESW")	{ return Directive(code, 3 * numReserved); }
	else if (code == "END")		{ return Directive(code, 0); }
	else if (code == "BASE")	{ return Directive(code, 0); }
	else if (code == "NOBASE")	{ return Directive(code, 0); }
	else return Directive("ERROR",0);
}
template <typename Visitor> void enumerateFields_gen(DirectiveModule obj,  Visitor & vis) {
  enumerateFields_gen(Directive(obj), vis);
  vis(obj.name(),"name");
  vis(obj.hsailMajor(),"hsailMajor");
  vis(obj.hsailMinor(),"hsailMinor");
  vis(obj.profile(),"profile");
  vis(obj.machineModel(),"machineModel");
  vis(obj.defaultFloatRound(),"defaultFloatRound");
}
template <typename Visitor> void enumerateFields_gen(DirectiveExecutable obj,  Visitor & vis) {
  enumerateFields_gen(Directive(obj), vis);
  vis(obj.name(),"name");
  vis(obj.outArgCount(),"outArgCount");
  vis(obj.inArgCount(),"inArgCount");
  vis(obj.firstInArg(),"firstInArg");
  vis(obj.firstCodeBlockEntry(),"firstCodeBlockEntry");
  vis(obj.nextModuleEntry(),"nextModuleEntry");
  enumerateFields(obj.modifier(), vis);
  vis(obj.linkage(),"linkage");
}
template <typename Visitor> void enumerateFields_gen(DirectiveVariable obj,  Visitor & vis) {
  enumerateFields_gen(Directive(obj), vis);
  vis(obj.name(),"name");
  vis(obj.init(),"init");
  vis(obj.type(),"type");
  vis(obj.segment(),"segment");
  vis(obj.align(),"align");
  enumerateFields(obj.dim(), vis);
  enumerateFields(obj.modifier(), vis);
  vis(obj.linkage(),"linkage");
  vis(obj.allocation(),"allocation");
}
Esempio n. 6
0
bool AsmFile::Read()
{	
    bool rv = true;
    AsmExpr::ReInit();
    parser->Init();
    bigEndian = parser->IsBigEndian();
    FPF::SetBigEndian(bigEndian);
    Instruction::SetBigEndian(bigEndian);
    listing.SetBigEndian(bigEndian);
    while (!lexer.AtEof())
    {
        bool inInstruction = false;
        try
        {
            if (GetKeyword() == Lexer::openbr)
            {
                Directive();
                thisLabel = NULL;
            }
            else if (parser->MatchesOpcode(GetToken()->GetChars()))
            {
                NoAbsolute();
                NeedSection();
                inInstruction = true;
                int lineno = preProcessor.GetMainLineNo();
                Instruction *ins = parser->Parse(lexer.GetRestOfLine(), currentSection->GetPC());
                if (lineno >= 0)
                    listing.Add(ins, lineno, preProcessor.InMacro());
                NextToken();
                currentSection->InsertInstruction(ins);
                thisLabel = NULL;
            }
            else
            {
                int lineno = preProcessor.GetMainLineNo();
                std::string name = GetId();
                DoLabel(name, lineno);
            }
        }
        catch(std::runtime_error *e)
        {
            Errors::Error(e->what());
            delete e;
            rv = false;
            if (inInstruction)
                NextToken();
            else
                lexer.SkipPastEol();
        }
    }
    for (std::map<std::string, std::string>::iterator it = exports.begin(); it != exports.end(); ++it)
    {
        if (labels[it->first] == NULL)
        {
            Errors::Error(std::string("Undefined export symbol '") + it->first + "'");
            rv = false;
        }
        else
        {
            labels[it->first]->SetPublic(true);
        }
    }
    for (std::set<std::string>::iterator it = globals.begin(); it != globals.end(); ++it)
    {
        if (labels[*it] == NULL)
        {
            Errors::Error(std::string("Undefined public '") + *it + "'");
            rv = false;
        }
        else
        {
            labels[*it]->SetPublic(true);
        }
    }
    return rv && !Errors::ErrorCount();
}
template <typename Visitor> void enumerateFields_gen(DirectivePragma obj,  Visitor & vis) {
  enumerateFields_gen(Directive(obj), vis);
  vis(obj.operands(),"operands");
}
template <typename Visitor> void enumerateFields_gen(DirectiveNone obj,  Visitor & vis) {
  enumerateFields_gen(Directive(obj), vis);
}
template <typename Visitor> void enumerateFields_gen(DirectiveLoc obj,  Visitor & vis) {
  enumerateFields_gen(Directive(obj), vis);
  vis(obj.filename(),"filename");
  vis(obj.line(),"line");
  vis(obj.column(),"column");
}
Esempio n. 10
0
template <typename Visitor> void enumerateFields_gen(DirectiveLabel obj,  Visitor & vis) {
  enumerateFields_gen(Directive(obj), vis);
  vis(obj.name(),"name");
}
Esempio n. 11
0
template <typename Visitor> void enumerateFields_gen(DirectiveFbarrier obj,  Visitor & vis) {
  enumerateFields_gen(Directive(obj), vis);
  vis(obj.name(),"name");
  enumerateFields(obj.modifier(), vis);
  vis(obj.linkage(),"linkage");
}
Esempio n. 12
0
template <typename Visitor> void enumerateFields_gen(DirectiveControl obj,  Visitor & vis) {
  enumerateFields_gen(Directive(obj), vis);
  vis(obj.control(),"control");
  vis(obj.operands(),"operands");
}
Esempio n. 13
0
template <typename Visitor> void enumerateFields_gen(DirectiveArgBlockStart obj,  Visitor & vis) {
  enumerateFields_gen(Directive(obj), vis);
}