Skip to content

Commit f77a00c

Browse files
committed
Refactor pragma processing for localized strings
Improve detection of localized strings by iterating over leading pragmas in both variable and general declarations. Rename and clarify helper methods, adjust logic to check all tokens, and simplify IsPragmaToken. Also, clean up and reorganize using directives.
1 parent 08d4616 commit f77a00c

2 files changed

Lines changed: 38 additions & 32 deletions

File tree

src/AXSharp.compiler/src/ixr/Program.cs

Lines changed: 37 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
// See https://aka.ms/new-console-template for more information
22
using AX.ST.Semantic;
3+
using AX.ST.Semantic.Model;
4+
using AX.ST.Semantic.Model.Declarations;
5+
using AX.ST.Semantic.Pragmas;
36
using AX.ST.Syntax.Parser;
47
using AX.ST.Syntax.Tree;
58
using AX.Text;
69
using AX.Text.Diagnostics;
710
using AXSharp.Compiler;
811
using AXSharp.ixc_doc;
9-
using System;
10-
using CommandLine;
11-
using System.Reflection;
12-
using System.Text;
13-
using CliWrap;
14-
using System.Runtime.InteropServices;
15-
using System.Runtime.CompilerServices;
16-
using AX.ST.Semantic.Model;
1712
using AXSharp.ixr_doc;
13+
using CliWrap;
14+
using CommandLine;
1815
using Microsoft.CodeAnalysis;
1916
using Serilog.Parsing;
20-
using static System.Net.Mime.MediaTypeNames;
17+
using System;
18+
using System.Reflection;
19+
using System.Runtime.CompilerServices;
20+
using System.Runtime.InteropServices;
21+
using System.Text;
2122
using System.Text.RegularExpressions;
23+
using static System.Net.Mime.MediaTypeNames;
2224

2325

2426
const string Logo =
@@ -94,30 +96,39 @@ void IterateSyntaxTreeForStringLiterals(ISyntaxNode root, LocalizedStringWrapper
9496
{
9597
foreach (var literalSyntax in GetChildNodesRecursive(root).OfType<ILiteralSyntax>())
9698
{
97-
var token = literalSyntax.Tokens.First();
9899
AddToDictionaryIfLocalizedStringInLiterals(literalSyntax, lw, fileName);
99100
}
100101
}
101102

102-
103-
104103
void IterateSyntaxTreeForPragmas(ISyntaxNode root, LocalizedStringWrapper lw, string fileName)
105104
{
106-
foreach (var pragmaSyntax in GetChildNodesRecursive(root).OfType<PragmaSyntax>())
105+
foreach (var storage in GetChildNodesRecursive(root).OfType<IVariableDeclarationSyntax>())
107106
{
108-
var token = pragmaSyntax;
109-
if (lw.IsAttributeNamePragmaToken(token.PragmaContent))
107+
storage.GetLeadingPragmas().ToList().ForEach(pragmaSyntax =>
110108
{
111-
AddToDictionaryIfLocalizedString(token, lw, fileName);
112-
}
109+
var token = pragmaSyntax as PragmaSyntax;
110+
if (lw.IsAttributeNamePragmaToken(pragmaSyntax.Content))
111+
{
112+
AddToDictionaryIfLocalizedStringInPragmas(token, lw, fileName);
113+
}
114+
});
115+
}
116+
foreach (var storage in GetChildNodesRecursive(root).OfType<IDeclarationSyntax>())
117+
{
118+
storage.GetLeadingPragmas().ToList().ForEach(pragmaSyntax =>
119+
{
120+
var token = pragmaSyntax;
121+
if (lw.IsAttributeNamePragmaToken(pragmaSyntax.Content))
122+
{
123+
AddToDictionaryIfLocalizedStringInPragmas(token, lw, fileName);
124+
}
125+
});
113126
}
114127
}
115128

116-
void AddToDictionaryIfLocalizedString(PragmaSyntax token, LocalizedStringWrapper lw, string fileName)
129+
void AddToDictionaryIfLocalizedStringInPragmas(PragmaSyntax token, LocalizedStringWrapper lw, string fileName)
117130
{
118-
// if is valid token
119-
if(IsStringToken(token) || IsPragmaToken(token))
120-
{
131+
121132
// try to acquire localized string
122133
var localizedStringList = lw.TryToGetLocalizedStrings(token.PragmaContent);
123134

@@ -142,8 +153,7 @@ void AddToDictionaryIfLocalizedString(PragmaSyntax token, LocalizedStringWrapper
142153
// add id and wrapper to dictionary
143154
lw.LocalizedStringsDictionary.TryAdd(id, wrapper);
144155
}
145-
}
146-
}
156+
}
147157
}
148158

149159
void AddToDictionaryIfLocalizedStringInLiterals(ILiteralSyntax literal, LocalizedStringWrapper lw, string fileName)
@@ -158,9 +168,9 @@ void AddToDictionaryIfLocalizedStringInLiterals(ILiteralSyntax literal, Localize
158168
// try to acquire localized string
159169
var localizedStringList = lw.TryToGetLocalizedStrings(token.FullText);
160170

161-
if (localizedStringList == null)
171+
if(localizedStringList == null)
162172
{
163-
return;
173+
continue; // ✓ Skip to next token
164174
}
165175

166176
foreach (string localizedString in localizedStringList)
@@ -184,12 +194,8 @@ void AddToDictionaryIfLocalizedStringInLiterals(ILiteralSyntax literal, Localize
184194
}
185195
}
186196
bool IsPragmaToken(PragmaSyntax token)
187-
{
188-
//if(token.SyntaxKind == SyntaxKind.PragmaToken)
189-
//{
190-
// return true;
191-
//}
192-
return false;
197+
{
198+
return true;
193199
}
194200

195201
bool IsStringToken(PragmaSyntax token)

src/AXSharp.compiler/src/ixr/Properties/launchSettings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
},
1010
"app-withref": {
1111
"commandName": "Project",
12-
"workingDirectory": "c:\\W\\Develop\\gh\\inxton\\simatic-ax\\axopen.templates\\axopen.template.simple\\ax\\"
12+
"workingDirectory": "C:\\W\\Develop\\gh\\inxton\\simatic-ax\\axopen.templates\\axopen\\src\\inspectors\\ctrl"
1313
}
1414
}
1515
}

0 commit comments

Comments
 (0)