Add translator to poyo

This commit is contained in:
2025-05-16 11:27:16 +02:00
parent 871f46b996
commit f83f59c05a
10 changed files with 424 additions and 410 deletions

View File

@@ -122,3 +122,13 @@ 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")}");
// 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")}");

View File

@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\PoyoLang.Dictionary\PoyoLang.Dictionary.csproj" />
<ProjectReference Include="..\PoyoLang.Translator\PoyoLang.Translator.csproj" />
</ItemGroup>
</Project>

View File

@@ -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<string, string>();
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<char> 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);

View File

@@ -4,28 +4,23 @@
<TargetFramework>netstandard2.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<LangVersion>default</LangVersion>
<LangVersion>latest</LangVersion>
<IncludeBuildOutput>false</IncludeBuildOutput>
<IsRoslynComponent>true</IsRoslynComponent>
<EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules>
<IsRoslynComponent>true</IsRoslynComponent>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.13.0" />
<PackageReference Include="PolySharp" Version="1.15.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="System.Text.Json" Version="9.0.5" PrivateAssets="all" GeneratePathProperty="true" />
</ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0"/>
<ItemGroup>
<None Remove="dictionary.json" />
<PackageReference Include="PolySharp" Version="1.15.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>

View File

@@ -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<string, string>>(dictionary!.ToString())
ReadCustomDictionary(dictionary!)
);
var formattedDictionaries = parsedDictionaries
@@ -39,6 +39,28 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
});
}
private static Dictionary<string, string> ReadCustomDictionary(SourceText text)
{
var dictionary = new Dictionary<string, string>();
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<Node> BuildPrefixTree(Dictionary<string, string> dictionary)
{
var rootNodes = new List<Node>();
@@ -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<char> text, StringBuilder output)
private void NextLetter(ref ReadOnlySpan<char> text, StringBuilder output)
{
"""
);
@@ -123,6 +147,7 @@ public class PoyoLangTranslatorGenerator : IIncrementalGenerator
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..];
// Punctuation/Unknown characters case
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}}}
"""
);
}

View File

@@ -0,0 +1,9 @@
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"profiles": {
"PoyoLang.Translator.SourceGenerator": {
"commandName": "DebugRoslynComponent",
"targetProject": "../PoyoLang.Test/PoyoLang.Test.csproj"
}
}
}

View File

@@ -7,12 +7,11 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\PoyoLang.Translator.SourceGenerator\PoyoLang.Translator.SourceGenerator.csproj" ReferenceOutputAssembly="false" OutputItemType="Analyzer" />
<ProjectReference Include="..\PoyoLang.Translator.SourceGenerator\PoyoLang.Translator.SourceGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
</ItemGroup>
<ItemGroup>
<None Remove="dictionary.json" />
<AdditionalFiles Include="dictionary.json" />
<AdditionalFiles Include="dictionary.txt" />
</ItemGroup>
</Project>

View File

@@ -1,6 +1,24 @@
using System.Text;
namespace PoyoLang.Translator;
public partial class PoyoLangTranslator
{
public string TranslateToPoyo(ReadOnlySpan<char> 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();
}
}

View File

@@ -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"
}

View File

@@ -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