|
|
|
@ -353,17 +353,23 @@ namespace Compiler
|
|
|
|
|
{
|
|
|
|
|
if (const Extensions *extensions = getContext().getExtensions())
|
|
|
|
|
{
|
|
|
|
|
char returnType; // ignored
|
|
|
|
|
std::string argumentType; // ignored
|
|
|
|
|
bool hasExplicit = false; // ignored
|
|
|
|
|
if (extensions->isInstruction (keyword, argumentType, hasExplicit))
|
|
|
|
|
bool isInstruction = extensions->isInstruction (keyword, argumentType, hasExplicit);
|
|
|
|
|
|
|
|
|
|
if(isInstruction || (mExplicit.empty() && extensions->isFunction(keyword, returnType, argumentType, hasExplicit)))
|
|
|
|
|
{
|
|
|
|
|
// pretend this is not a keyword
|
|
|
|
|
std::string name = loc.mLiteral;
|
|
|
|
|
if (name.size()>=2 && name[0]=='"' && name[name.size()-1]=='"')
|
|
|
|
|
name = name.substr (1, name.size()-2);
|
|
|
|
|
if(isInstruction || mLocals.getType(Misc::StringUtils::lowerCase(name)) != ' ')
|
|
|
|
|
{
|
|
|
|
|
// pretend this is not a keyword
|
|
|
|
|
return parseName (name, loc, scanner);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (keyword==Scanner::K_end || keyword==Scanner::K_begin ||
|
|
|
|
|
keyword==Scanner::K_short || keyword==Scanner::K_long ||
|
|
|
|
|