@@ -282,6 +282,15 @@ private bool IsNextPossiblyFunctionDeclaration()
282282 } ) ;
283283 }
284284
285+ private new IdentifierNode ParseIdentifier ( )
286+ {
287+ string identifier = base . ParseIdentifier ( ) ;
288+ return new IdentifierNode ( new List < HLSLToken > { Previous ( ) } )
289+ {
290+ Identifier = identifier ,
291+ } ;
292+ }
293+
285294 public StatePropertyNode ParseStateProperty ( )
286295 {
287296 var firstTok = Peek ( ) ;
@@ -290,7 +299,13 @@ public StatePropertyNode ParseStateProperty()
290299 if ( Match ( TokenKind . TextureKeyword ) )
291300 {
292301 var nameTok = Advance ( ) ;
293- name = new NamedTypeNode ( Range ( nameTok , nameTok ) ) { Name = "texture" } ;
302+ name = new NamedTypeNode ( new List < HLSLToken > { nameTok } )
303+ {
304+ Name = new IdentifierNode ( new List < HLSLToken > { nameTok } )
305+ {
306+ Identifier = "texture"
307+ }
308+ } ;
294309 }
295310 else
296311 {
@@ -359,7 +374,7 @@ public SamplerStateLiteralExpressionNode ParseSamplerStateLiteral()
359374 public CompileExpressionNode ParseCompileExpression ( )
360375 {
361376 var keywordTok = Eat ( TokenKind . CompileKeyword ) ;
362- string target = ParseIdentifier ( ) ;
377+ var target = ParseIdentifier ( ) ;
363378
364379 var name = ParseNamedExpression ( ) ;
365380 var param = ParseParameterList ( ) ;
@@ -596,7 +611,7 @@ public ExpressionNode ParsePrefixOrPostFixExpression()
596611
597612 case TokenKind . DotToken :
598613 Eat ( TokenKind . DotToken ) ;
599- string identifier = ParseIdentifier ( ) ;
614+ var identifier = ParseIdentifier ( ) ;
600615
601616 if ( Match ( TokenKind . OpenParenToken ) )
602617 {
@@ -620,7 +635,7 @@ public ExpressionNode ParsePrefixOrPostFixExpression()
620635 public NamedExpressionNode ParseNamedExpression ( )
621636 {
622637 var firstTok = Peek ( ) ;
623- string identifier = ParseIdentifier ( ) ;
638+ var identifier = ParseIdentifier ( ) ;
624639
625640 var name = new IdentifierExpressionNode ( Range ( firstTok , firstTok ) ) { Name = identifier } ;
626641
@@ -698,7 +713,7 @@ public AttributeNode ParseAttribute()
698713 {
699714 var openTok = Eat ( TokenKind . OpenBracketToken ) ;
700715
701- string identifier = ParseIdentifier ( ) ;
716+ var identifier = ParseIdentifier ( ) ;
702717
703718 List < LiteralExpressionNode > args = new List < LiteralExpressionNode > ( ) ;
704719 if ( Match ( TokenKind . OpenParenToken ) )
@@ -1060,7 +1075,7 @@ public NumericTypeNode ParseNumericType(bool allowVoid = false)
10601075 public UserDefinedNamedTypeNode ParseUserDefinedNamedType ( )
10611076 {
10621077 var firstTok = Peek ( ) ;
1063- string identifier = ParseIdentifier ( ) ;
1078+ var identifier = ParseIdentifier ( ) ;
10641079 var name = new NamedTypeNode ( Range ( firstTok , firstTok ) ) { Name = identifier } ;
10651080
10661081 if ( Match ( TokenKind . ColonColonToken ) )
@@ -1118,7 +1133,7 @@ public ArrayRankNode ParseArrayRank()
11181133 public VariableDeclaratorNode ParseVariableDeclarator ( bool allowCompoundInitializer = true )
11191134 {
11201135 var firstTok = Peek ( ) ;
1121- string identifier = ParseIdentifier ( ) ;
1136+ var identifier = ParseIdentifier ( ) ;
11221137
11231138 List < ArrayRankNode > arrayRanks = new List < ArrayRankNode > ( ) ;
11241139 while ( Match ( TokenKind . OpenBracketToken ) )
@@ -1204,7 +1219,7 @@ public VariableDeclaratorQualifierNode ParseVariableDeclaratorQualifierNode()
12041219 public SemanticNode ParseSemantic ( )
12051220 {
12061221 var colTok = Eat ( TokenKind . ColonToken ) ;
1207- string identifier = ParseIdentifier ( ) ;
1222+ var identifier = ParseIdentifier ( ) ;
12081223 return new SemanticNode ( Range ( colTok , Previous ( ) ) ) { Name = identifier } ;
12091224 }
12101225
@@ -1214,7 +1229,7 @@ public RegisterLocationNode ParseRegisterLocation()
12141229 Eat ( TokenKind . RegisterKeyword ) ;
12151230 Eat ( TokenKind . OpenParenToken ) ;
12161231
1217- string location = ParseIdentifier ( ) ;
1232+ string location = base . ParseIdentifier ( ) ;
12181233 RegisterKind kind = default ;
12191234 int index = 0 ;
12201235 switch ( location . ToLower ( ) . FirstOrDefault ( ) )
@@ -1236,7 +1251,7 @@ public RegisterLocationNode ParseRegisterLocation()
12361251 {
12371252 Eat ( TokenKind . CommaToken ) ;
12381253
1239- string space = ParseIdentifier ( ) ;
1254+ string space = base . ParseIdentifier ( ) ;
12401255 string spaceLexeme = string . Concat ( space . SkipWhile ( x => ! char . IsNumber ( x ) ) ) ;
12411256 if ( int . TryParse ( spaceLexeme , out int parsedIndex ) )
12421257 {
@@ -1264,7 +1279,7 @@ public PackoffsetNode ParsePackoffsetNode()
12641279 Eat ( TokenKind . PackoffsetKeyword ) ;
12651280 Eat ( TokenKind . OpenParenToken ) ;
12661281
1267- string location = ParseIdentifier ( ) ;
1282+ string location = base . ParseIdentifier ( ) ;
12681283 int index = 0 ;
12691284 string indexLexeme = string . Concat ( location . SkipWhile ( x => ! char . IsNumber ( x ) ) ) ;
12701285 if ( ! int . TryParse ( indexLexeme , out index ) )
@@ -1276,7 +1291,7 @@ public PackoffsetNode ParsePackoffsetNode()
12761291 if ( Match ( TokenKind . DotToken ) )
12771292 {
12781293 Eat ( TokenKind . DotToken ) ;
1279- swizzle = ParseIdentifier ( ) ;
1294+ swizzle = base . ParseIdentifier ( ) ;
12801295 }
12811296
12821297 var closeTok = Eat ( TokenKind . CloseParenToken ) ;
@@ -1746,13 +1761,13 @@ public PreProcessorDirectiveNode ParsePreProcessorDirective(Func<HLSLSyntaxNode>
17461761 public PreProcessorDirectiveNode ParseDefineDirective ( )
17471762 {
17481763 var keywordTok = Eat ( TokenKind . DefineDirectiveKeyword ) ;
1749- string ident = ParseIdentifier ( ) ;
1764+ string ident = base . ParseIdentifier ( ) ;
17501765
17511766 // Function like
17521767 if ( Match ( TokenKind . OpenFunctionLikeMacroParenToken ) )
17531768 {
17541769 Eat ( TokenKind . OpenFunctionLikeMacroParenToken ) ;
1755- var args = ParseSeparatedList0 ( TokenKind . CloseParenToken , TokenKind . CommaToken , ParseIdentifier ) ;
1770+ var args = ParseSeparatedList0 ( TokenKind . CloseParenToken , TokenKind . CommaToken , base . ParseIdentifier ) ;
17561771 Eat ( TokenKind . CloseParenToken ) ;
17571772 var tokens = ParseMany0 ( ( ) => ! Match ( TokenKind . EndDirectiveToken ) , ( ) => Advance ( ) ) ;
17581773 var endTok = Eat ( TokenKind . EndDirectiveToken ) ;
@@ -1798,7 +1813,7 @@ public LineDirectiveNode ParseLineDirective()
17981813 public UndefDirectiveNode ParseUndefDirective ( )
17991814 {
18001815 var keywordTok = Eat ( TokenKind . UndefDirectiveKeyword ) ;
1801- string ident = ParseIdentifier ( ) ;
1816+ string ident = base . ParseIdentifier ( ) ;
18021817 var endTok = Eat ( TokenKind . EndDirectiveToken ) ;
18031818 RecoverTo ( TokenKind . EndDirectiveToken ) ;
18041819 return new UndefDirectiveNode ( Range ( keywordTok , endTok ) ) { Name = ident } ;
@@ -1841,7 +1856,7 @@ public IfDirectiveNode ParseIfDirective(Func<HLSLSyntaxNode> recurse, bool elif)
18411856 public IfDefDirectiveNode ParseIfDefDirective ( Func < HLSLSyntaxNode > recurse )
18421857 {
18431858 var keywordTok = Eat ( TokenKind . IfdefDirectiveKeyword ) ;
1844- string ident = ParseIdentifier ( ) ;
1859+ string ident = base . ParseIdentifier ( ) ;
18451860 var endTok = Eat ( TokenKind . EndDirectiveToken ) ;
18461861 RecoverTo ( TokenKind . EndDirectiveToken ) ;
18471862 var body = ParseMany0 ( ( ) => ! Match ( TokenKind . ElseDirectiveKeyword , TokenKind . ElifDirectiveKeyword , TokenKind . EndifDirectiveKeyword ) , recurse ) ;
@@ -1857,7 +1872,7 @@ public IfDefDirectiveNode ParseIfDefDirective(Func<HLSLSyntaxNode> recurse)
18571872 public IfNotDefDirectiveNode ParseIfNotDefDirective ( Func < HLSLSyntaxNode > recurse )
18581873 {
18591874 var keywordTok = Eat ( TokenKind . IfndefDirectiveKeyword ) ;
1860- string ident = ParseIdentifier ( ) ;
1875+ string ident = base . ParseIdentifier ( ) ;
18611876 var endTok = Eat ( TokenKind . EndDirectiveToken ) ;
18621877 RecoverTo ( TokenKind . EndDirectiveToken ) ;
18631878 var body = ParseMany0 ( ( ) => ! Match ( TokenKind . ElseDirectiveKeyword , TokenKind . ElifDirectiveKeyword , TokenKind . EndifDirectiveKeyword ) , recurse ) ;
0 commit comments