}
if(s)
{
- decl.declarators = declarators = MkListOne(MkDeclaratorIdentifier(MkIdentifier(s)));
+ decl.declarators = declarators = MkListOne(MkStructDeclarator(MkDeclaratorIdentifier(MkIdentifier(s)), null));
specifiers.Remove(spec);
FreeSpecifier(spec);
spec = null;
if(tpl) *tpl = 0;
baseClass = FindClass(name);
- if(baseClass.ctx)
+ if(baseClass && baseClass.ctx)
{
TemplatedType copy;
for(copy = (TemplatedType)baseClass.ctx.templateTypes.first; copy; copy = (TemplatedType)copy.next)
delete type;
}
}
- else if(baseClass.registered)
+ else if(baseClass && baseClass.registered)
{
Class sClass;
for(sClass = baseClass.registered; sClass; sClass = sClass.base)
Symbol _class = spec.id ? FindClass(spec.id.string) : null;
if(_class)
{
+ specType.declaredWithStruct = true;
if(!_class.registered || _class.registered.type != structClass)
- specType.directClassAccess = true;
+ specType.directClassAccess = true; // TODO: Need to clarify what 'directClassAccess' is about
specType._class = _class;
specType.kind = classType;
break;
}
+ specType.members.Clear();
if(spec.type == structSpecifier)
specType.kind = structType;
else if(spec.type == unionSpecifier)
default extern OldList * ast;
default extern int yyparse ();
+default extern int yylex ();
public void SetAST(OldList * list) { ast = list; }
public OldList * GetAST() { return ast; }
{
yyparse();
}
+
+public int LexEc()
+{
+ return yylex();
+}
+
+public const char * GetYYText()
+{
+ return yytext;
+}