diff --git a/PoyoLang.Dictionary.Generation/Program.cs b/PoyoLang.Dictionary.Generation/Program.cs
index d016052..f739cfe 100644
--- a/PoyoLang.Dictionary.Generation/Program.cs
+++ b/PoyoLang.Dictionary.Generation/Program.cs
@@ -121,4 +121,14 @@ foreach (var letter in Alphabet.BaseAlphabet)
await File.WriteAllTextAsync("dictionary.json", JsonSerializer.Serialize(dictionary, jsonOptions));
-Console.WriteLine($"Dictionary written to {Path.Combine(Environment.CurrentDirectory, "dictionary.json")}");
\ No newline at end of file
+Console.WriteLine($"Dictionary written to {Path.Combine(Environment.CurrentDirectory, "dictionary.json")}");
+
+// Also write in simple custom format for source generator
+await using var customOutput = File.CreateText("dictionary.txt");
+
+foreach (var pair in dictionary)
+{
+ await customOutput.WriteLineAsync($"{pair.Key}={pair.Value}");
+}
+
+Console.WriteLine($"Custom dictionary written to {Path.Combine(Environment.CurrentDirectory, "dictionary.txt")}");
\ No newline at end of file
diff --git a/PoyoLang.Test/PoyoLang.Test.csproj b/PoyoLang.Test/PoyoLang.Test.csproj
index 491aa7e..f70f504 100644
--- a/PoyoLang.Test/PoyoLang.Test.csproj
+++ b/PoyoLang.Test/PoyoLang.Test.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/PoyoLang.Test/Program.cs b/PoyoLang.Test/Program.cs
index e8cd52a..ae0248e 100644
--- a/PoyoLang.Test/Program.cs
+++ b/PoyoLang.Test/Program.cs
@@ -1,63 +1,14 @@
// See https://aka.ms/new-console-template for more information
using System.Text;
-using PoyoLang.Dictionary;
+using PoyoLang.Translator;
-var dictionary = new Dictionary();
+Console.OutputEncoding = Encoding.UTF8;
-var text = "Lorem ipsum dolor sit amet";
+var text = "Immutable abstract representation of a span of text. For example, in an error diagnostic that reports a location, it could come from a parsed string, text from a tool editor buffer, etc.";
-var output = new StringBuilder(text.Length);
-var span = text.AsSpan();
-
-NextLetter(ref span, output);
-
-Console.Write(output.ToString());
-
-void NextLetter(ref ReadOnlySpan text, StringBuilder output)
-{
-
- if (text.Length > 0)
- {
- var isCaps = char.IsUpper(text[0]);
-
- switch (text[0])
- {
- case 'a' or 'A':
-
- if (text.Length > 1)
- {
- switch (text[1])
- {
- case 'm':
-
- text = text[2..];
-
- output.Append(isCaps ? "Payo" : "payo");
-
- return;
- }
- }
-
- text = text[1..];
-
- output.Append(isCaps ? "Piyo" : "piyo");
-
- return;
-
- case 'b' or 'B':
-
- text = text[1..];
-
- output.Append(isCaps ? "Pïyo" : "pïyo");
-
- return;
- }
-
- text = text[1..];
-
- output.Append(text[0]);
- }
-}
+var translator = new PoyoLangTranslator();
+var translated = translator.TranslateToPoyo(text);
+Console.WriteLine(translated);
\ No newline at end of file
diff --git a/PoyoLang.Translator.SourceGenerator/PoyoLang.Translator.SourceGenerator.csproj b/PoyoLang.Translator.SourceGenerator/PoyoLang.Translator.SourceGenerator.csproj
index 13920ca..dd4a102 100644
--- a/PoyoLang.Translator.SourceGenerator/PoyoLang.Translator.SourceGenerator.csproj
+++ b/PoyoLang.Translator.SourceGenerator/PoyoLang.Translator.SourceGenerator.csproj
@@ -4,28 +4,23 @@
netstandard2.0
enable
enable
- default
+ latest
- false
- true
true
+ true
+ true
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
-
-
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
-
diff --git a/PoyoLang.Translator.SourceGenerator/PoyoLangTranslatorGenerator.cs b/PoyoLang.Translator.SourceGenerator/PoyoLangTranslatorGenerator.cs
index 096774f..3cb76dd 100644
--- a/PoyoLang.Translator.SourceGenerator/PoyoLangTranslatorGenerator.cs
+++ b/PoyoLang.Translator.SourceGenerator/PoyoLangTranslatorGenerator.cs
@@ -1,6 +1,6 @@
using System.Text;
-using System.Text.Json;
using Microsoft.CodeAnalysis;
+using Microsoft.CodeAnalysis.Text;
namespace PoyoLang.Translator.SourceGenerator;
@@ -15,12 +15,12 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
// There will be only one of those but incremental generators work as pipelines
var dictionaries = texts
- .Where(static text => text.Path.EndsWith("dictionary.json"))
+ .Where(static text => text.Path.EndsWith("dictionary.txt"))
.Select(static (text, _) => text.GetText());
var parsedDictionaries = dictionaries
.Select(static (dictionary, _) =>
- JsonSerializer.Deserialize>(dictionary!.ToString())
+ ReadCustomDictionary(dictionary!)
);
var formattedDictionaries = parsedDictionaries
@@ -39,6 +39,28 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
});
}
+ private static Dictionary ReadCustomDictionary(SourceText text)
+ {
+ var dictionary = new Dictionary();
+
+ foreach (var line in text.ToString().Split('\n'))
+ {
+ var span = line.TrimEnd('\r').AsSpan();
+
+ // Reached end of file
+ if (span.Length < 1)
+ {
+ break;
+ }
+
+ var splitIndex = span.IndexOf('=');
+
+ dictionary[span[..splitIndex].ToString()] = span[(splitIndex + 1)..].ToString();
+ }
+
+ return dictionary;
+ }
+
private static List BuildPrefixTree(Dictionary dictionary)
{
var rootNodes = new List();
@@ -93,6 +115,7 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
namespace PoyoLang.Translator;
+
"""
);
@@ -108,8 +131,9 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
// Next letter method definition
source.Append(
"""
- public void NextLetter(ref ReadOnlySpan text, StringBuilder output)
+ private void NextLetter(ref ReadOnlySpan text, StringBuilder output)
{
+
"""
);
@@ -120,9 +144,10 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
{
return;
}
-
+
var isCaps = char.IsUpper(text[0]);
-
+
+
"""
);
@@ -131,11 +156,13 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
// Next letter method end
source.Append(
"""
+
// Punctuation/Unknown characters case
- text = text[1..];
-
output.Append(text[0]);
+
+ text = text[1..];
}
+
"""
);
@@ -158,6 +185,8 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
$$"""
{{indent}}switch (text[{{depth}}])
{{indent}}{
+
+
"""
);
@@ -170,7 +199,8 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
source.Append(
$$"""
{{indent}} case '{{node.Letter}}' or '{{char.ToUpper(node.Letter)}}':
- {{indent}}
+
+
"""
);
@@ -181,6 +211,7 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
$$"""
{{indent}} if (text.Length > {{depth + 1}})
{{indent}} {
+
"""
);
@@ -190,6 +221,7 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
source.Append(
$$"""
{{indent}} }
+
"""
);
}
@@ -203,6 +235,8 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
{{indent}} output.Append(isCaps ? "{{targetUpper}}" : "{{targetLower}}");
{{indent}}
{{indent}} return;
+
+
"""
);
}
@@ -210,8 +244,8 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
// Switch-case end
source.Append(
$$"""
-
{{indent}}}
+
"""
);
}
diff --git a/PoyoLang.Translator.SourceGenerator/Properties/launchSettings.json b/PoyoLang.Translator.SourceGenerator/Properties/launchSettings.json
new file mode 100644
index 0000000..dd4f924
--- /dev/null
+++ b/PoyoLang.Translator.SourceGenerator/Properties/launchSettings.json
@@ -0,0 +1,9 @@
+{
+ "$schema": "http://json.schemastore.org/launchsettings.json",
+ "profiles": {
+ "PoyoLang.Translator.SourceGenerator": {
+ "commandName": "DebugRoslynComponent",
+ "targetProject": "../PoyoLang.Test/PoyoLang.Test.csproj"
+ }
+ }
+}
diff --git a/PoyoLang.Translator/PoyoLang.Translator.csproj b/PoyoLang.Translator/PoyoLang.Translator.csproj
index c7c030c..ccc59e6 100644
--- a/PoyoLang.Translator/PoyoLang.Translator.csproj
+++ b/PoyoLang.Translator/PoyoLang.Translator.csproj
@@ -7,12 +7,11 @@
-
+
-
-
+
diff --git a/PoyoLang.Translator/PoyoLangTranslator.cs b/PoyoLang.Translator/PoyoLangTranslator.cs
index 61fc82e..5704944 100644
--- a/PoyoLang.Translator/PoyoLangTranslator.cs
+++ b/PoyoLang.Translator/PoyoLangTranslator.cs
@@ -1,6 +1,24 @@
+using System.Text;
+
namespace PoyoLang.Translator;
public partial class PoyoLangTranslator
{
-
+ public string TranslateToPoyo(ReadOnlySpan text)
+ {
+ var output = new StringBuilder(text.Length);
+
+ while (text.Length > 0)
+ {
+ NextLetter(ref text, output);
+
+ // Add space if not reached the end
+ if (text.Length > 0)
+ {
+ output.Append(' ');
+ }
+ }
+
+ return output.ToString();
+ }
}
\ No newline at end of file
diff --git a/PoyoLang.Translator/dictionary.json b/PoyoLang.Translator/dictionary.json
deleted file mode 100644
index 9bc8a12..0000000
--- a/PoyoLang.Translator/dictionary.json
+++ /dev/null
@@ -1,322 +0,0 @@
-{
- "poyo": " ",
- "poy\u00F3": "e",
- "poy\u00F2": "t",
- "poy\u00F4": "a",
- "poy\u00F6": "o",
- "poy\u00F5": "i",
- "poy\u014D": "n",
- "poy\u01D2": "e ",
- "p\u00F3yo": "r",
- "p\u00F3y\u00F3": "h",
- "p\u00F3y\u00F2": "s",
- "p\u00F3y\u00F4": "l",
- "p\u00F3y\u00F6": "d",
- "p\u00F3y\u00F5": "c",
- "p\u00F3y\u014D": "th",
- "p\u00F3y\u01D2": "u",
- "p\u00F2yo": "t ",
- "p\u00F2y\u00F3": "he",
- "p\u00F2y\u00F2": "m",
- "p\u00F2y\u00F4": "b",
- "p\u00F2y\u00F6": "f",
- "p\u00F2y\u00F5": "y",
- "p\u00F2y\u014D": "p",
- "p\u00F2y\u01D2": "the",
- "p\u00F4yo": "n ",
- "p\u00F4y\u00F3": "w",
- "p\u00F4y\u00F2": "g",
- "p\u00F4y\u00F4": "he ",
- "p\u00F4y\u00F6": "in",
- "p\u00F4y\u00F5": "y ",
- "p\u00F4y\u014D": "d ",
- "p\u00F4y\u01D2": "r ",
- "p\u00F6yo": "an",
- "p\u00F6y\u00F3": "er",
- "p\u00F6y\u00F2": "the ",
- "p\u00F6y\u00F4": "be",
- "p\u00F6y\u00F6": "at",
- "p\u00F6y\u00F5": "re",
- "p\u00F6y\u014D": "v",
- "p\u00F6y\u01D2": "on",
- "p\u00F5yo": "o ",
- "p\u00F5y\u00F3": "nd",
- "p\u00F5y\u00F2": "or",
- "p\u00F5y\u00F4": "be ",
- "p\u00F5y\u00F6": "ha",
- "p\u00F5y\u00F5": "en",
- "p\u00F5y\u014D": "to",
- "p\u00F5y\u01D2": "ve",
- "p\u014Dyo": "ou",
- "p\u014Dy\u00F3": "nd ",
- "p\u014Dy\u00F2": "it",
- "p\u014Dy\u00F4": "st",
- "p\u014Dy\u00F6": "l ",
- "p\u014Dy\u00F5": "k",
- "p\u014Dy\u014D": "te",
- "p\u014Dy\u01D2": "al",
- "p\u01D2yo": "ti",
- "p\u01D2y\u00F3": "f ",
- "p\u01D2y\u00F2": "and",
- "p\u01D2y\u00F4": "s ",
- "p\u01D2y\u00F6": "er ",
- "p\u01D2y\u00F5": "nt",
- "p\u01D2y\u014D": "and ",
- "p\u01D2y\u01D2": "of",
- "payo": "ar",
- "pay\u00F3": "a ",
- "pay\u00F2": "se",
- "pay\u00F4": "to ",
- "pay\u00F6": "ea",
- "pay\u00F5": "hi",
- "pay\u014D": "of ",
- "pay\u01D2": "me",
- "p\u00E1yo": "le",
- "p\u00E1y\u00F3": "on ",
- "p\u00E1y\u00F2": "h ",
- "p\u00E1y\u00F4": "co",
- "p\u00E1y\u00F6": "is",
- "p\u00E1y\u00F5": "in ",
- "p\u00E1y\u014D": "at ",
- "p\u00E1y\u01D2": "ro",
- "p\u00E0yo": "ll",
- "p\u00E0y\u00F3": "ve ",
- "p\u00E0y\u00F2": "de",
- "p\u00E0y\u00F4": "es",
- "p\u00E0y\u00F6": "ng",
- "p\u00E0y\u00F5": "io",
- "p\u00E0y\u014D": "om",
- "p\u00E0y\u01D2": "ne",
- "p\u00E2yo": "ic",
- "p\u00E2y\u00F3": "li",
- "p\u00E2y\u00F2": "ri",
- "p\u00E2y\u00F4": "ra",
- "p\u00E2y\u00F6": "as",
- "p\u00E2y\u00F5": "ce",
- "p\u00E2y\u014D": "g ",
- "p\u00E2y\u01D2": "ho",
- "p\u00E4yo": "ion",
- "p\u00E4y\u00F3": "ca",
- "p\u00E4y\u00F2": "or ",
- "p\u00E4y\u00F4": "ta",
- "p\u00E4y\u00F6": "ut",
- "p\u00E4y\u00F5": "el",
- "p\u00E4y\u014D": "ch",
- "p\u00E4y\u01D2": "m ",
- "p\u00E3yo": "hat",
- "p\u00E3y\u00F3": "ma",
- "p\u00E3y\u00F2": "hat ",
- "p\u00E3y\u00F4": "ur",
- "p\u00E3y\u00F6": "k ",
- "p\u00E3y\u00F5": "ng ",
- "p\u00E3y\u014D": "fo",
- "p\u00E3y\u01D2": "re ",
- "p\u0101yo": "no",
- "p\u0101y\u00F3": "si",
- "p\u0101y\u00F2": "her",
- "p\u0101y\u00F4": "av",
- "p\u0101y\u00F6": "nt ",
- "p\u0101y\u00F5": "tha",
- "p\u0101y\u014D": "ion ",
- "p\u0101y\u01D2": "il",
- "p\u01CEyo": "ent",
- "p\u01CEy\u00F3": "et",
- "p\u01CEy\u00F2": "la",
- "p\u01CEy\u00F4": "us",
- "p\u01CEy\u00F6": "ac",
- "p\u01CEy\u00F5": "ly",
- "p\u01CEy\u014D": "ing",
- "p\u01CEy\u01D2": "wh",
- "piyo": "ow",
- "piy\u00F3": "ave",
- "piy\u00F2": "pe",
- "piy\u00F4": "ec",
- "piy\u00F6": "ly ",
- "piy\u00F5": "ot",
- "piy\u014D": "tio",
- "piy\u01D2": "ll ",
- "p\u00EDyo": "tion",
- "p\u00EDy\u00F3": "wi",
- "p\u00EDy\u00F2": "ave ",
- "p\u00EDy\u00F4": "se ",
- "p\u00EDy\u00F6": "al ",
- "p\u00EDy\u00F5": "ing ",
- "p\u00EDy\u014D": "ge",
- "p\u00EDy\u01D2": "it ",
- "p\u00ECyo": "so",
- "p\u00ECy\u00F3": "that",
- "p\u00ECy\u00F2": "that ",
- "p\u00ECy\u00F4": "for",
- "p\u00ECy\u00F6": "ay",
- "p\u00ECy\u00F5": "st ",
- "p\u00ECy\u014D": "lo",
- "p\u00ECy\u01D2": "pr",
- "p\u00EEyo": "ee",
- "p\u00EEy\u00F3": "hav",
- "p\u00EEy\u00F2": "have",
- "p\u00EEy\u00F4": "have ",
- "p\u00EEy\u00F6": "tr",
- "p\u00EEy\u00F5": "sh",
- "p\u00EEy\u014D": "le ",
- "p\u00EEy\u01D2": "w ",
- "p\u00EFyo": "mo",
- "p\u00EFy\u00F3": "an ",
- "p\u00EFy\u00F2": "tion ",
- "p\u00EFy\u00F4": "ut ",
- "p\u00EFy\u00F6": "un",
- "p\u00EFy\u00F5": "ce ",
- "p\u00EFy\u014D": "ct",
- "p\u00EFy\u01D2": "ay ",
- "p\u0129yo": "me ",
- "p\u0129y\u00F3": "di",
- "p\u0129y\u00F2": "ss",
- "p\u0129y\u00F4": "ed",
- "p\u0129y\u00F6": "i ",
- "p\u0129y\u00F5": "we",
- "p\u0129y\u014D": "ol",
- "p\u0129y\u01D2": "yo",
- "p\u012Byo": "ul",
- "p\u012By\u00F3": "rt",
- "p\u012By\u00F2": "te ",
- "p\u012By\u00F4": "em",
- "p\u012By\u00F6": "th ",
- "p\u012By\u00F5": "ter",
- "p\u012By\u014D": "do",
- "p\u012By\u01D2": "ke",
- "p\u01D0yo": "po",
- "p\u01D0y\u00F3": "ir",
- "p\u01D0y\u00F2": "thi",
- "p\u01D0y\u00F4": "nc",
- "p\u01D0y\u00F6": "you",
- "p\u01D0y\u00F5": "his",
- "p\u01D0y\u014D": "im",
- "p\u01D0y\u01D2": "is ",
- "puyo": "oo",
- "puy\u00F3": "all",
- "puy\u00F2": "ent ",
- "puy\u00F4": "ig",
- "puy\u00F6": "pa",
- "puy\u00F5": "ate",
- "puy\u014D": "p ",
- "puy\u01D2": "ati",
- "p\u00FAyo": "ld",
- "p\u00FAy\u00F3": "fi",
- "p\u00FAy\u00F2": "his ",
- "p\u00FAy\u00F4": "en ",
- "p\u00FAy\u00F6": "ver",
- "p\u00FAy\u00F5": "na",
- "p\u00FAy\u014D": "mi",
- "p\u00FAy\u01D2": "ry",
- "p\u00F9yo": "ai",
- "p\u00F9y\u00F3": "pl",
- "p\u00F9y\u00F2": "ow ",
- "p\u00F9y\u00F4": "gh",
- "p\u00F9y\u00F6": "wo",
- "p\u00F9y\u00F5": "sa",
- "p\u00F9y\u014D": "ad",
- "p\u00F9y\u01D2": "her ",
- "p\u00FByo": "ld ",
- "p\u00FBy\u00F3": "ev",
- "p\u00FBy\u00F2": "su",
- "p\u00FBy\u00F4": "os",
- "p\u00FBy\u00F6": "iv",
- "p\u00FBy\u00F5": "for ",
- "p\u00FBy\u014D": "ther",
- "p\u00FBy\u01D2": "wa",
- "p\u00FCyo": "ni",
- "p\u00FCy\u00F3": "ry ",
- "p\u00FCy\u00F2": "ith",
- "p\u00FCy\u00F4": "am",
- "p\u00FCy\u00F6": "bo",
- "p\u00FCy\u00F5": "u ",
- "p\u00FCy\u014D": "ch ",
- "p\u00FCy\u01D2": "ab",
- "p\u0169yo": "ou ",
- "p\u0169y\u00F3": "you ",
- "p\u0169y\u00F2": "op",
- "p\u0169y\u00F4": "id",
- "p\u0169y\u00F6": "wit",
- "p\u0169y\u00F5": "ne ",
- "p\u0169y\u014D": "bu",
- "p\u0169y\u01D2": "with",
- "p\u016Byo": "fe",
- "p\u016By\u00F3": "tu",
- "p\u016By\u00F2": "bl",
- "p\u016By\u00F4": "ere",
- "p\u016By\u00F6": "atio",
- "p\u016By\u00F5": "x",
- "p\u016By\u014D": "ed ",
- "p\u016By\u01D2": "ation",
- "p\u01D4yo": "ome",
- "p\u01D4y\u00F3": "out",
- "p\u01D4y\u00F2": "con",
- "p\u01D4y\u00F4": "ke ",
- "p\u01D4y\u00F6": "ns",
- "p\u01D4y\u00F5": "rea",
- "p\u01D4y\u014D": "eve",
- "p\u01D4y\u01D2": "ci",
- "peyo": "ie",
- "pey\u00F3": "com",
- "pey\u00F2": "ar ",
- "pey\u00F4": "et ",
- "pey\u00F6": "ith ",
- "pey\u00F5": "vi",
- "pey\u014D": "ty",
- "pey\u01D2": "with ",
- "p\u00E9yo": "ear",
- "p\u00E9y\u00F3": "fr",
- "p\u00E9y\u00F2": "if",
- "p\u00E9y\u00F4": "ag",
- "p\u00E9y\u00F6": "res",
- "p\u00E9y\u00F5": "ate ",
- "p\u00E9y\u014D": "do ",
- "p\u00E9y\u01D2": "mp",
- "p\u00E8yo": "ey",
- "p\u00E8y\u00F3": "ive",
- "p\u00E8y\u00F2": "ia",
- "p\u00E8y\u00F4": "pro",
- "p\u00E8y\u00F6": "ba",
- "p\u00E8y\u00F5": "ov",
- "p\u00E8y\u014D": "nce",
- "p\u00E8y\u01D2": "as ",
- "p\u00EAyo": "ck",
- "p\u00EAy\u00F3": "sta",
- "p\u00EAy\u00F2": "sp",
- "p\u00EAy\u00F4": "ty ",
- "p\u00EAy\u00F6": "gr",
- "p\u00EAy\u00F5": "ter ",
- "p\u00EAy\u014D": "ation ",
- "p\u00EAy\u01D2": "hin",
- "p\u00EByo": "ess",
- "p\u00EBy\u00F3": "ak",
- "p\u00EBy\u00F2": "ge ",
- "p\u00EBy\u00F4": "ill",
- "p\u00EBy\u00F6": "go",
- "p\u00EBy\u00F5": "out ",
- "p\u00EBy\u014D": "our",
- "p\u00EBy\u01D2": "ot ",
- "p\u1EBDyo": "ey ",
- "p\u1EBDy\u00F3": "fa",
- "p\u1EBDy\u00F2": "ss ",
- "p\u1EBDy\u00F4": "igh",
- "p\u1EBDy\u00F6": "not",
- "p\u1EBDy\u00F5": "int",
- "p\u1EBDy\u014D": "ex",
- "p\u1EBDy\u01D2": "j",
- "p\u0113yo": "om ",
- "p\u0113y\u00F3": "one",
- "p\u0113y\u00F2": "ap",
- "p\u0113y\u00F4": "men",
- "p\u0113y\u00F6": "all ",
- "p\u0113y\u00F5": "od",
- "p\u0113y\u014D": "here",
- "p\u0113y\u01D2": "est",
- "p\u011Byo": "up",
- "p\u011By\u00F3": "ive ",
- "p\u011By\u00F2": "rs",
- "p\u011By\u00F4": "ere ",
- "p\u011By\u00F6": "ove",
- "p\u011By\u00F5": "nce ",
- "p\u011By\u014D": "ide",
- "p\u011By\u01D2": "uc"
-}
\ No newline at end of file
diff --git a/PoyoLang.Translator/dictionary.txt b/PoyoLang.Translator/dictionary.txt
new file mode 100644
index 0000000..6b37a9e
--- /dev/null
+++ b/PoyoLang.Translator/dictionary.txt
@@ -0,0 +1,320 @@
+poyo=
+poyó=e
+poyò=t
+poyô=a
+poyö=o
+poyõ=i
+poyō=n
+poyǒ=e
+póyo=r
+póyó=h
+póyò=s
+póyô=l
+póyö=d
+póyõ=c
+póyō=th
+póyǒ=u
+pòyo=t
+pòyó=he
+pòyò=m
+pòyô=b
+pòyö=f
+pòyõ=y
+pòyō=p
+pòyǒ=the
+pôyo=n
+pôyó=w
+pôyò=g
+pôyô=he
+pôyö=in
+pôyõ=y
+pôyō=d
+pôyǒ=r
+pöyo=an
+pöyó=er
+pöyò=the
+pöyô=be
+pöyö=at
+pöyõ=re
+pöyō=v
+pöyǒ=on
+põyo=o
+põyó=nd
+põyò=or
+põyô=be
+põyö=ha
+põyõ=en
+põyō=to
+põyǒ=ve
+pōyo=ou
+pōyó=nd
+pōyò=it
+pōyô=st
+pōyö=l
+pōyõ=k
+pōyō=te
+pōyǒ=al
+pǒyo=ti
+pǒyó=f
+pǒyò=and
+pǒyô=s
+pǒyö=er
+pǒyõ=nt
+pǒyō=and
+pǒyǒ=of
+payo=ar
+payó=a
+payò=se
+payô=to
+payö=ea
+payõ=hi
+payō=of
+payǒ=me
+páyo=le
+páyó=on
+páyò=h
+páyô=co
+páyö=is
+páyõ=in
+páyō=at
+páyǒ=ro
+pàyo=ll
+pàyó=ve
+pàyò=de
+pàyô=es
+pàyö=ng
+pàyõ=io
+pàyō=om
+pàyǒ=ne
+pâyo=ic
+pâyó=li
+pâyò=ri
+pâyô=ra
+pâyö=as
+pâyõ=ce
+pâyō=g
+pâyǒ=ho
+päyo=ion
+päyó=ca
+päyò=or
+päyô=ta
+päyö=ut
+päyõ=el
+päyō=ch
+päyǒ=m
+pãyo=hat
+pãyó=ma
+pãyò=hat
+pãyô=ur
+pãyö=k
+pãyõ=ng
+pãyō=fo
+pãyǒ=re
+pāyo=no
+pāyó=si
+pāyò=her
+pāyô=av
+pāyö=nt
+pāyõ=tha
+pāyō=ion
+pāyǒ=il
+pǎyo=ent
+pǎyó=et
+pǎyò=la
+pǎyô=us
+pǎyö=ac
+pǎyõ=ly
+pǎyō=ing
+pǎyǒ=wh
+piyo=ow
+piyó=ave
+piyò=pe
+piyô=ec
+piyö=ly
+piyõ=ot
+piyō=tio
+piyǒ=ll
+píyo=tion
+píyó=wi
+píyò=ave
+píyô=se
+píyö=al
+píyõ=ing
+píyō=ge
+píyǒ=it
+pìyo=so
+pìyó=that
+pìyò=that
+pìyô=for
+pìyö=ay
+pìyõ=st
+pìyō=lo
+pìyǒ=pr
+pîyo=ee
+pîyó=hav
+pîyò=have
+pîyô=have
+pîyö=tr
+pîyõ=sh
+pîyō=le
+pîyǒ=w
+pïyo=mo
+pïyó=an
+pïyò=tion
+pïyô=ut
+pïyö=un
+pïyõ=ce
+pïyō=ct
+pïyǒ=ay
+pĩyo=me
+pĩyó=di
+pĩyò=ss
+pĩyô=ed
+pĩyö=i
+pĩyõ=we
+pĩyō=ol
+pĩyǒ=yo
+pīyo=ul
+pīyó=rt
+pīyò=te
+pīyô=em
+pīyö=th
+pīyõ=ter
+pīyō=do
+pīyǒ=ke
+pǐyo=po
+pǐyó=ir
+pǐyò=thi
+pǐyô=nc
+pǐyö=you
+pǐyõ=his
+pǐyō=im
+pǐyǒ=is
+puyo=oo
+puyó=all
+puyò=ent
+puyô=ig
+puyö=pa
+puyõ=ate
+puyō=p
+puyǒ=ati
+púyo=ld
+púyó=fi
+púyò=his
+púyô=en
+púyö=ver
+púyõ=na
+púyō=mi
+púyǒ=ry
+pùyo=ai
+pùyó=pl
+pùyò=ow
+pùyô=gh
+pùyö=wo
+pùyõ=sa
+pùyō=ad
+pùyǒ=her
+pûyo=ld
+pûyó=ev
+pûyò=su
+pûyô=os
+pûyö=iv
+pûyõ=for
+pûyō=ther
+pûyǒ=wa
+püyo=ni
+püyó=ry
+püyò=ith
+püyô=am
+püyö=bo
+püyõ=u
+püyō=ch
+püyǒ=ab
+pũyo=ou
+pũyó=you
+pũyò=op
+pũyô=id
+pũyö=wit
+pũyõ=ne
+pũyō=bu
+pũyǒ=with
+pūyo=fe
+pūyó=tu
+pūyò=bl
+pūyô=ere
+pūyö=atio
+pūyõ=x
+pūyō=ed
+pūyǒ=ation
+pǔyo=ome
+pǔyó=out
+pǔyò=con
+pǔyô=ke
+pǔyö=ns
+pǔyõ=rea
+pǔyō=eve
+pǔyǒ=ci
+peyo=ie
+peyó=com
+peyò=ar
+peyô=et
+peyö=ith
+peyõ=vi
+peyō=ty
+peyǒ=with
+péyo=ear
+péyó=fr
+péyò=if
+péyô=ag
+péyö=res
+péyõ=ate
+péyō=do
+péyǒ=mp
+pèyo=ey
+pèyó=ive
+pèyò=ia
+pèyô=pro
+pèyö=ba
+pèyõ=ov
+pèyō=nce
+pèyǒ=as
+pêyo=ck
+pêyó=sta
+pêyò=sp
+pêyô=ty
+pêyö=gr
+pêyõ=ter
+pêyō=ation
+pêyǒ=hin
+pëyo=ess
+pëyó=ak
+pëyò=ge
+pëyô=ill
+pëyö=go
+pëyõ=out
+pëyō=our
+pëyǒ=ot
+pẽyo=ey
+pẽyó=fa
+pẽyò=ss
+pẽyô=igh
+pẽyö=not
+pẽyõ=int
+pẽyō=ex
+pẽyǒ=j
+pēyo=om
+pēyó=one
+pēyò=ap
+pēyô=men
+pēyö=all
+pēyõ=od
+pēyō=here
+pēyǒ=est
+pěyo=up
+pěyó=ive
+pěyò=rs
+pěyô=ere
+pěyö=ove
+pěyõ=nce
+pěyō=ide
+pěyǒ=uc