public DeclarationUnit( SyntaxToken ident, TypeSpecifierSyntax typeSpecifier) : base(ident) { TypeSpecifier = typeSpecifier; }
// [4] TypeSpecifier = 'void' | 'char' | 'bool' | 'short' | 'int' | 'long' | 'double' | 'signed' | 'unsigned' | // StructOrUnionSpecifier | EnumSpecifier private bool IsTypeSpecifier(out TypeSpecifierSyntax typeSpecifier) { typeSpecifier = new TypeSpecifierSyntax(); if (IsStructOrUnionSpecifier(out var structOrUnionSpecifier)) { //typeSpecifier.Keyword = // new KeywordToken(structOrUnionSpecifier.Ident.Line, structOrUnionSpecifier.Ident.Column, structOrUnionSpecifier.Ident.Value); typeSpecifier.AddChild(structOrUnionSpecifier); // userDefinedType guaranteed not to be null return(true); } else if (IsEnumSpecifier(out var enumSpecifier)) { typeSpecifier.Keyword = enumSpecifier.Keyword; return(true); } else if (token.Kind == SyntaxKind.KeywordToken) { typeSpecifier.Keyword = token; // predefined type // scope.Add(new PredefinedTypeUnit(keywordToken)); ReadNextToken(); return(true); } return(false); }
public DeclarationSpecifierSyntax( SyntaxToken keyword, TypeSpecifierSyntax typeSpecifier) : base(SyntaxKind.DeclarationSpecifierSyntax) { Keyword = keyword; TypeSpecifier = typeSpecifier; }