Module:grc-pronunciation/data

Hello, you have come here looking for the meaning of the word Module:grc-pronunciation/data. In DICTIOUS you will not only get to know all the dictionary meanings for the word Module:grc-pronunciation/data, but we will also tell you about its etymology, its characteristics and you will know how to say Module:grc-pronunciation/data in singular and plural. Everything you need to know about the word Module:grc-pronunciation/data you have here. The definition of the word Module:grc-pronunciation/data will help you to be more precise and correct when speaking or writing your texts. Knowing the definition ofModule:grc-pronunciation/data, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.

This module contains data used by Module:grc-pronunciation


local U = require("Module:string utilities").char
local gmatch = mw.ustring.gmatch
local m_utils_data = require("Module:grc-utilities/data")
local diacritics = m_utils_data.diacritics

local nonsyllabic = U(0x32F)
local high = U(0x341)  -- combining acute tone mark
local low = U(0x340)  -- combining grave tone mark
local midHigh = U(0x1DC4)  -- mid–high pitch
local midLow = U(0x1DC6)  -- mid–low pitch
local highMid = U(0x1DC7)  -- high–mid pitch
local rising = U(0x30C)		-- combining caron
local falling = diacritics.Latin_circum	-- combining circumflex
local voiceless = U(0x325) -- combining ring below
local aspirated = "ʰ"
local stress_mark = "ˈ"
local long = "ː"
local macron = diacritics.spacing_macron
local breve = diacritics.spacing_breve

local circumflex_on_long_vowel = falling
local acute_on_long_vowel = rising
local acute_on_short_vowel = high
local grave_pitch_mark = low

local data = {}

-- Letters which can be treated as allographs of other letters.
data.aliases = {
	 = "χ",
	 = "κσ",
	 = "ϝ̔",
	 = "φ",
	 = "σ",
	 = "κ",
	 = "χ",
	 = "σ",
	 = "θ",
	 = "πσ"
}

data = {
	 = {
		 = " ",
		 = " ",
		 = " ",
		 = " ",
		 = " ",
	},
}

data = {
	 = {
		 = "b",
		 = "b",
		 = {
			{ "-1=μ", "b" },
			"β"
		},
		 = {
			{ "-1=μ", "b" },
			"v"
		},
		 = {
			{ "1=β", "" },
			{ "-1=μ", "b" },
			"v",
		},
	},
}

data = {
	 = {
		 = {
			{ "1.dorsal/1=μ", "ŋ" },
			"ɡ",
		},
		 = {
			{ "1.dorsal", "ŋ" },
			"ɡ",
		},
		 = {
			{ "1.dorsal",
				{
					{ "1~preFront", "ɲ" },
					"ŋ",
				},
			},
			{ "0~preFront",
				{
					{ "-1=γ/-1=ν", "ɟ" },
					"ʝ",
				},
			},
			{ "-1=γ/-1=ν", "ɡ" },
			"ɣ",		},
		 = {
			{ "1.dorsal",
				{
					{ "1~preFront", "ɲ" },
					"ŋ",
				},
			},
			{ "0~preFront",
				{
					{ "-1=γ/-1=ν", "ɟ" },
					"ʝ",
				},
			},
			{ "-1=γ/-1=ν", "ɡ" },
			"ɣ",
		},
		 = {
			{ "1.dorsal",
				{
					{ "1~preFront", "ɲ" },
					"ŋ",
				},
			},
			{ "0~preFront",
				{
					{ "-1=γ/-1=ν", "ɟ" },
					"ʝ",
				},
			},
			{ "-1=γ/-1=ν", "ɡ" },
			"ɣ",
		},
	},
}

data = {
	 = {
		 = "d",
		 = "d",
		 = {
			{ "-1=ν", "d" },
			"ð",
		},
		 = {
			{ "-1=ν", "d" },
			"ð",
		},
		 = {
			{ "1=δ", "" },
			{ "-1=ν", "d" },
			"ð",
		},
	},
}

data = {
	 = {
		{ "1=̓/1=̔", 1 },
		0,
	},
	 = {
		 = "w",
		 = "",
		 = "",
		 = "",
		 = "",
	},
}

data = {
	 = {
		 = "w",
		 = "",
		 = "",
		 = "",
		 = "",
	},
}

data = {
	 = {
		 = "ʍ",
		 = "(h)",
		 = "",
		 = "",
		 = "",
	},
}

data = {
	 = {
		 = "zd",
		 = "z",
		 = "z",
		 = "z",
		 = {
			{ "1=ζ", "" },
			"z",
		},
	},
}

data = {
	 = {
		 = "h",
		 = "(h)",
		 = "",
		 = "",
		 = "",
	},
}

data = {
	 = {
		 = "tʰ",
		 = "tʰ",
		 = "θ",
		 = "θ",
		 = {
			{ "1=θ", "" },
			"θ",
		},
	},
}

data = {
	 = {
		 = "j",
		 = "j",
		 = "j",
		 = "j",
		 = "j",
	},
}

data = {
	 = {
		 = {
			{ "1.voiced+1.stop", "ɡ" },
			{ "1.aspirated", "kʰ" },
			"k",
		},
		 = {
			{ "1.voiced+1.stop", "ɡ" },
			"k",
		},
		 = {
			{ "1=κ", "" },
			{ "1.voiced+1.stop", "ɡ" },
			{ "-1=γ/-1=ν",
				{
					{ "0~preFront", "ɟ" },
					{ "1.unvoiced", "k" },
					"ɡ",
				},
			},
			{ "0~preFront", "c" },
			"k",
		},
		 = {
			{ "1=κ", "" },
			{ "1.voiced+1.stop", "ɡ" },
			{ "-1=γ/-1=ν",
				{
					{ "0~preFront", "ɟ" },
					{ "1.unvoiced", "k" },
					"ɡ",
				},
			},
			{ "0~preFront", "c" },
			"k",
		},
		 = {
			{ "1=κ", "" },
			{ "1.voiced+1.stop", "ɡ" },
			{ "-1=γ/-1=ν",
				{
					{ "0~preFront", "ɟ" },
					{ "1.unvoiced", "k" },
					"ɡ",
				},
			},
			{ "0~preFront", "c" },
			"k",
		},
	},
}

data = {
	 = {
		 = "l",
		 = "l",
		 = "l",
		 = "l",
		 = {
			{ "1=λ", "" },
			"l",
		},
	},
}

data = {
	 = {
		 = "m",
		 = "m",
		 = "m",
		 = "m",
		 = {
			{ "1=μ", "" },
			"m",
		},
	},
}

data = {
	 = {
		 = "n",
		 = "n",
		 = "n",
		 = "n",
		 = {
			{ "1=ν", "" },
			"n",
		},
	},
}

data = {
	 = {
		 = { 
			{ "1.aspirated", "pʰ" },
			"p",
		},
		 = "p",
		 = "p",
		 = "p",
		 = {
			{ "-1=μ",
				{
					{ "1.unvoiced", "p" },
					"b",
				},
			},
			{ "1=π", "" },
			"p",
		},
	},
}

data = {
	 = {
		 = {
			{ "1=ρ/1=ῥ/-1=ρ/-1=ῤ/-1=ῥ", "r̥" },
			"r",
		},
		 = "r",
		 = "r",
		 = "r",
		 = {
			{ "1=ρ/1=ῤ/1=ῥ", "" },
			"r",
		},
	},
}

data = {
	 = {
		 = {
			{ "1=ρ/1=ῥ", "r̥" },
			"r",
		},
		 = "r",
		 = "r",
		 = "r",
		 = {
			{ "1=ρ/1=ῤ/1=ῥ", "" },
			"r",
		},
	},
}

data = {
	 = {
		 = "r̥",
		 = "r",
		 = "r",
		 = "r",
		 = {
			{ "1=ρ/1=ῤ/1=ῥ", "" },
			"r",
		},
	},
}

data = {
	 = {
		 = {
			{ "1.voiced", "z" },
			"s",
		},
		 = {
			{ "1.voiced", "z" },
			"s",
		},
		 = {
			{ "1.voiced", "z" },
			"s",
		},
		 = {
			{ "1.voiced", "z" },
			"s",
		},
		 = {
			{ "1=σ", "" },
			{ "1.voiced", "z" },
			"s",
		},
	},
}

data = {
	 = {
		 = {
			{ "1.aspirated", "tʰ" },
			"t",
		},
		 = "t",
		 = "t",
		 = "t",
		 = {
			{ "-1=ν", "d" },
			{ "1=τ", "" },
			"t",
		},
	},
}

data = {
	 = {
		 = "pʰ",
		 = "pʰ",
		 = "ɸ",
		 = "f",
		 = {
			{ "1=φ", "" },
			"f",
		},
	},
}

data = {
	 = {
		 = "kʰ",
		 = "kʰ",
		 = {
			{ "1=χ", "" },
			{ "0~preFront", "ç" },
			"x" },
		 = {
			{ "1=χ", "" },
			{ "0~preFront", "ç" },
			"x" },
		 = {
			{ "1=χ", "" },
			{ "0~preFront", "ç" },
			"x",
		},
	},
}

data = {
	 = {
		{ "0~hasMacronBreve",
			{
				{ "1~isUDiphth", 2 },
				1,
			},
		},
		{ "0~isIDiphth/0~isUDiphth", 1},
		0,
	},
	 = {
		 = "a",
		 = "a",
		 = "a",
		 = "a",
		 = "a",
	},
}

data = {
	 = {
		{ "0~isIDiphth/0~isUDiphth", 1},
		0,
	},
	 = {
		 = "e",
		 = "e",
		 = "e",
		 = "e",
		 = "e",
	},
}

data = {
	 = {
		{ "0~isUDiphth", 1},
		0,
	},
	 = {
		 = "ɛ",
		 = "e̝",
		 = "i",
		 = "i",
		 = "i",
	},
}

data = {
	 = {
		 = "i",
		 = "i",
		 = "i",
		 = "i",
		 = "i",
	},
}

data = {
	 = {
		{ "0~isIDiphth/0~isUDiphth", 1},
		0,
	},
	 = {
		 = "o",
		 = "o",
		 = "o",
		 = "o",
		 = "o",
	},
}

data = {
	 = {
		{ "0~isIDiphth/0~hasMacronBreve", 1},
		0,
	},
	 = {
		 = "y",
		 = "y",
		 = "y",
		 = "y",
		 = "i",
	},
}

data = {
	 = {
		{ "0~isUDiphth", 1},
		0,
	},
	 = {
		 = "ɔ",
		 = "o",
		 = "o",
		 = "o",
		 = "o",
	},
}

local categories = {
	 = {
		 = { "π", "τ", "κ", "β", "δ", "γ", "φ", "θ", "χ" },
		 = { "κ", "γ", "χ" },
		 = { "β", "δ", "γ", "ζ", "μ", "ν", "λ", "ρ", "ϝ", "ϳ" },
		 = { "π", "τ", "κ", "φ", "θ", "χ", "σ", "ͱ" },
		 = { "φ", "θ", "χ", "ͱ" },
		 = { "ϊ", "ϋ", "ΐ", "ΰ", "ῒ", "ῢ", "ῗ", "ῧ" },
		 = { "ᾳ", "ῃ", "ῳ", "ᾴ", "ῄ", "ῴ", "ᾲ", "ῂ", "ῲ", "ᾷ", "ῇ", "ῷ", "ᾀ", "ᾐ", "ᾠ", "ᾄ", "ᾔ", "ᾤ", "ᾂ", "ᾒ", "ᾢ", "ᾆ", "ᾖ", "ᾦ", "ᾁ", "ᾑ", "ᾡ", "ᾅ", "ᾕ", "ᾥ", "ᾃ", "ᾓ", "ᾣ", "ᾇ", "ᾗ", "ᾧ" },
		},
	 = {
		 = { "α", "ε", "η", "ι", "ο", "ω", "υ" }, -- Not currently used; if it were, it might need to include all the accented vowel characters.
		 = { "β", "γ", "δ", "ζ", "ͱ", "θ", "ϳ", "κ", "λ", "μ", "ν", "π", "ρ", "σ", "τ", "φ", "χ" },
		 = { "η", "ω", "ᾱ", "ῑ", "ῡ" },
		 = { "ε", "ο", "ᾰ", "ῐ", "ῠ" },
		 = { "α", "ι", "υ" },
		 = { diacritics.macron, diacritics.spacing_macron, diacritics.modifier_macron, diacritics.breve, diacritics.spacing_breve, diacritics.rough, diacritics.smooth, diacritics.diaeresis, diacritics.acute, diacritics.grave, diacritics.circum, diacritics.Latin_circum, diacritics.coronis, diacritics.subscript },
		},
	 = {
		 = { "ά", "έ", "ή", "ί", "ό", "ύ", "ώ", "ᾴ", "ῄ", "ῴ", "ἄ", "ἔ", "ἤ", "ἴ", "ὄ", "ὔ", "ὤ", "ᾄ", "ᾔ", "ᾤ", "ἅ", "ἕ", "ἥ", "ἵ", "ὅ", "ὕ", "ὥ", "ᾅ", "ᾕ", "ᾥ", "ΐ", "ΰ" },
		 = { "ὰ", "ὲ", "ὴ", "ὶ", "ὸ", "ὺ", "ὼ", "ᾲ", "ῂ", "ῲ", "ἂ", "ἒ", "ἢ", "ἲ", "ὂ", "ὒ", "ὢ", "ᾂ", "ᾒ", "ᾢ", "ἃ", "ἓ", "ἣ", "ἳ", "ὃ", "ὓ", "ὣ", "ᾃ", "ᾓ", "ᾣ", "ῒ", "ῢ" },
		 = { "ᾶ", "ῆ", "ῖ", "ῦ", "ῶ", "ᾷ", "ῇ", "ῷ", "ἆ", "ἦ", "ἶ", "ὖ", "ὦ", "ᾆ", "ᾖ", "ᾦ", "ἇ", "ἧ", "ἷ", "ὗ", "ὧ", "ᾇ", "ᾗ", "ᾧ", "ῗ", "ῧ" },
		},
	 = {
		 = { "ἁ", "ἑ", "ἡ", "ἱ", "ὁ", "ὑ", "ὡ", "ᾁ", "ᾑ", "ᾡ", "ἅ", "ἕ", "ἥ", "ἵ", "ὅ", "ὕ", "ὥ", "ᾅ", "ᾕ", "ᾥ", "ἃ", "ἓ", "ἣ", "ἳ", "ὃ", "ὓ", "ὣ", "ᾃ", "ᾓ", "ᾣ", "ἇ", "ἧ", "ἷ", "ὗ", "ὧ", "ᾇ", "ᾗ", "ᾧ" },
		 = { "ἀ", "ἐ", "ἠ", "ἰ", "ὀ", "ὐ", "ὠ", "ᾀ", "ᾐ", "ᾠ", "ῤ", "ἄ", "ἔ", "ἤ", "ἴ", "ὄ", "ὔ", "ὤ", "ᾄ", "ᾔ", "ᾤ", "ἂ", "ἒ", "ἢ", "ἲ", "ὂ", "ὒ", "ὢ", "ᾂ", "ᾒ", "ᾢ", "ἆ", "ἦ", "ἶ", "ὖ", "ὦ", "ᾆ", "ᾖ", "ᾦ" },
		},
	}

for key1, list in pairs(categories) do
	for key2, letters in pairs(list) do
		if type(key1) == "number" then
			for _, letter in ipairs(letters) do
				if not data then
					data = {}
				end
				data = true
			end
		elseif type(key1) == "string" then
			for _, letter in ipairs(letters) do
				if not data then
					data = {}
				end
				data = key2
			end
		end
	end
end

local rough_breathing = { "h", "(h)" }
local smooth_breathing = { "", "" }

local function get_breathing(breathing)
	return breathing == "rough" and rough_breathing or smooth_breathing
end

local function get_pitch_marks(accent_type, long)
	if accent_type == "acute" then
		if long then
			return acute_on_long_vowel
		else
			return acute_on_short_vowel
		end
	elseif accent_type == "grave" then
		return grave_pitch_mark
	elseif accent_type == "circum" then
		return circumflex_on_long_vowel
	end
	
	return ""
end

local function epsilon(breathing, accent)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, false)
	
	return {
			 = breathing .. "e" .. pitch,
			 = breathing .. stress .. "e",
			 = stress .. "e",
			 = stress .. "e",
			 = stress .. "e"
		}
end

for letter in gmatch("εέὲἐἔἒἑἕἓ", ".") do
	local l_data = data
	l_data.p = epsilon(l_data.breath, l_data.accent)
end

local function omicron(breathing, accent)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, false)
	
	return {
			 = breathing .. "o" .. pitch,
			 = breathing .. stress .. "o",
			 = stress .. "o",
			 = stress .. "o",
			 = stress .. "o"
		}
end

for letter in gmatch("οόὸὀὄὂὁὅὃ", ".") do
	local l_data = data
	l_data.p = omicron(l_data.breath, l_data.accent)
end

local function eta(breathing, accent, iota)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, true)
	local offglide = iota and ("i" .. nonsyllabic) or ""
	
	return {
			 = breathing .. "ɛ" .. pitch .. long .. offglide,
			 = breathing .. stress .. "e̝",
			 = stress .. "i",
			 = stress .. "i",
			 = stress .. "i"
		}
end

for letter in gmatch("ηῃήῄὴῂῆῇἠᾐἤᾔἢᾒἦᾖἡᾑἥᾕἣᾓἧᾗ", ".") do
	local l_data = data
	l_data.p = eta(l_data.breath, l_data.accent, l_data.subi)
end

local function omega(breathing, accent, iota)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, true)
	local offglide = iota and ("i" .. nonsyllabic) or ""
	
	return {
			 = breathing .. "ɔ" .. pitch .. long .. offglide,
			 = breathing .. stress .. "o",
			 = stress .. "o",
			 = stress .. "o",
			 = stress .. "o"
		}
end

for letter in gmatch("ωῳώῴὼῲῶῷὠᾠὤᾤὢᾢὦᾦὡᾡὥᾥὣᾣὧᾧ", ".") do
	local l_data = data
	l_data.p = omega(l_data.breath, l_data.accent, l_data.subi)
end

local function alpha(breathing, accent, iota, isLong)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, isLong)
	local length = (isLong or iota or accent == "circum") and long or ""
	local offglide = iota and ("i" .. nonsyllabic) or ""
	
	return {
			 = breathing .. "a" .. pitch .. length .. offglide,
			 = breathing .. stress .. "a",
			 = stress .. "a",
			 = stress .. "a",
			 = stress .. "a"
		}
end

for letter in gmatch("αᾳάᾴὰᾲᾶᾷἀᾀἄᾄἂᾂἆᾆἁᾁἅᾅἃᾃἇᾇ", ".") do
	local l_data = data
	l_data.p = alpha(l_data.breath, l_data.accent, l_data.subi)
	if not l_data.subi and l_data.accent ~= "circum" then
		if not l_data.pre then
			l_data.pre =  { { "0~hasMacronBreve", 1}, 0 }
		end
		data = {p = alpha(l_data.breath, l_data.accent, false, false)}
		data = {p = alpha(l_data.breath, l_data.accent, false, true)}
	end
end

local function iota(breathing, accent, isLong)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, isLong)
	local length = (isLong or accent == "circum") and long or ""
	
	return {
			 = breathing .. "i" .. pitch .. length,
			 = breathing .. stress .. "i",
			 = stress .. "i",
			 = stress .. "i",
			 = stress .. "i"
		}
end

local function ai(breathing, accent)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, true)
	
	return {
			 = breathing .. "a" .. pitch .. "i" .. nonsyllabic,
			 = breathing .. stress .. "ɛ",
			 = stress .. "ɛ",
			 = stress .. "e",
			 = stress .. "e"
		}
end

local function ei(breathing, accent)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, true)
	
	return {
			 = breathing .. "e" .. pitch .. long,
			 = breathing .. stress .. "i",
			 = stress .. "i",
			 = stress .. "i",
			 = stress .. "i"
		}
end

local function oi(breathing, accent)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, true)
	
	return {
			 = breathing .. "o" .. pitch .. "i" .. nonsyllabic,
			 = breathing .. stress .. "y",
			 = stress .. "y",
			 = stress .. "y",
			 = stress .. "i"
		}
end

local function ui(breathing, accent)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, true)
	
	return {
			 = breathing .. "y" .. pitch .. long,
			 = breathing .. stress .. "y",
			 = stress .. "y",
			 = stress .. "y",
			 = stress .. "i"
		}
end

for letter in gmatch("ιίὶῖἰἴἲἶἱἵἳἷϊΐῒῗ", ".") do
	local l_data = data
	l_data.p = iota(l_data.breath, l_data.accent)
	if l_data.accent ~= "circum" then
		l_data.pre =  { { "0~hasMacronBreve", 1}, 0 }
		data = {p = iota(l_data.breath, l_data.accent, false)}
		data = {p = iota(l_data.breath, l_data.accent, true)}
	end
	if not l_data.diar then
		local ai_data = ai(l_data.breath, l_data.accent)
		data = {p = ai_data}
		data = {p = ai_data}
		data = {p = ei(l_data.breath, l_data.accent)}
		data = {p = oi(l_data.breath, l_data.accent)}
		local ui_data = ui(l_data.breath, l_data.accent)
		data = {p = ui_data}
		data = {p = ui_data}
	end
end

local function upsilon(breathing, accent, isLong)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, isLong)
	local length = (isLong or accent == "circum") and long or ""
	
	return {
			 = breathing .. "y" .. pitch .. length,
			 = breathing .. stress .. "y",
			 = stress .. "y",
			 = stress .. "y",
			 = stress .. "i"
		}
end

local function au(breathing, accent)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, true)
	
	return {
		 = breathing .. "a" .. pitch .. "u" .. nonsyllabic,
		 = {
			{"2=σ+3=μ", stress .. "a" .. "w"},
			{"2.unvoiced", breathing .. stress .. "a" .. "ʍ"},
			breathing .. stress .. "a" .. "w",
		},
		 = {
			{"2=σ+3=μ", stress .. "aβ" },
			{ "2.unvoiced", stress .. "aɸ" },
			stress .. "aβ",
		},
		 = {
			{"2=σ+3=μ", stress .. "av" },
			{ "2.unvoiced", stress .. "af" },
			stress .. "av",
		},
		 = {
			{"2=σ+3=μ", stress .. "av" },
			{ "2.unvoiced", stress .. "af" },
			stress .. "av",
		},
	}
end

local function aau(breathing, accent)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, true)
	
	return {
		 = breathing .. "a" .. pitch .. "ːu" .. nonsyllabic,
		 = {
			{"2=σ+3=μ", stress .. "a" .. "w"},
			{"2.unvoiced", breathing .. stress .. "a" .. "ʍ"},
			breathing .. stress .. "a" .. "w",
		},
		 = {
			{"2=σ+3=μ", stress .. "aβ" },
			{ "2.unvoiced", stress .. "aɸ" },
			stress .. "aβ",
		},
		 = {
			{"2=σ+3=μ", stress .. "av" },
			{ "2.unvoiced", stress .. "af" },
			stress .. "av",
		},
		 = {
			{"2=σ+3=μ", stress .. "av" },
			{ "2.unvoiced", stress .. "af" },
			stress .. "av",
		},
	}
end

local function eu(breathing, accent)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, true)
	
	return {
		 = breathing .. "e" .. pitch .. "u" .. nonsyllabic,
		 = {
			{"2=σ+3=μ", stress .. "e" .. "w"},
			{"2.unvoiced+3=μ", breathing .. stress .. "e" .. "ʍ"},
			breathing .. stress .. "e" .. "w",
		},
		 = {
			{"2=σ+3=μ", stress .. "eβ" },
			{ "2.unvoiced", stress .. "eɸ" },
			stress .. "eβ",
		},
		 = {
			{"2=σ+3=μ", stress .. "ev" },
			{ "2.unvoiced", stress .. "ef" },
			stress .. "ev",
		},
		 = {
			{"2=σ+3=μ", stress .. "ev" },
			{ "2.unvoiced", stress .. "ef" },
			stress .. "ev",
		},
	}
end

local function hu(breathing, accent)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, true)
	
	return {
		 = breathing .. "ɛ" .. pitch .. "ːu" .. nonsyllabic,
		 = {
			{"2=σ+3=μ", stress .. "e̝" .. "w"},
			{"2.unvoiced", breathing .. stress .. "e̝" .. "ʍ"},
			breathing .. stress .. "e̝" .. "w",
		},
		 = {
			{"2=σ+3=μ", stress .. "iβ" },
			{ "2.unvoiced", stress .. "iɸ" },
			stress .. "iβ",
		},
		 = {
			{"2=σ+3=μ", stress .. "iv" },
			{ "2.unvoiced", stress .. "if" },
			stress .. "iv",
		},
		 = {
			{"2=σ+3=μ", stress .. "iv" },
			{ "2.unvoiced", stress .. "if" },
			stress .. "iv",
		},
	}
end

local function ou(breathing, accent)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, true)
	
	return {
			 = breathing .. "u" .. pitch .. long,
			 = breathing .. stress .. "u",
			 = stress .. "u",
			 = stress .. "u",
			 = stress .. "u"
		}
end

local function wu(breathing, accent)
	local breathing = get_breathing(breathing)
	local stress = accent and stress_mark or ""
	local pitch = get_pitch_marks(accent, true)
	
	return {
		 = breathing .. "ɔ" .. pitch .. "ːu" .. nonsyllabic,
		 = {
			{"2=σ+3=μ", stress .. "o" .. "w"},
			{"2.unvoiced", breathing .. stress .. "o" .. "ʍ"},
			breathing .. stress .. "o" .. "w",
		},
		 = {
			{"2=σ+3=μ", stress .. "oβ" },
			{ "2.unvoiced", stress .. "oɸ" },
			stress .. "oβ",
		},
		 = {
			{"2=σ+3=μ", stress .. "ov" },
			{ "2.unvoiced", stress .. "of" },
			stress .. "ov",
		},
		 = {
			{"2=σ+3=μ", stress .. "ov" },
			{ "2.unvoiced", stress .. "of" },
			stress .. "ov",
		},
	}
end

for letter in gmatch("υύὺῦὐὔὒὖὑὕὓὗϋΰῢῧ", ".") do
	local l_data = data
	l_data.p = upsilon(l_data.breath, l_data.accent)
	if l_data.accent ~= "circum" then
		if letter ~= "υ" then l_data.pre =  { { "0~hasMacronBreve", 1}, 0 } end
		data = {p = upsilon(l_data.breath, l_data.accent, false)}
		data = {p = upsilon(l_data.breath, l_data.accent, true)}
	end
	if not l_data.diar then
		local au_data = au(l_data.breath, l_data.accent)
		data = {p = au_data}
		data = {p = au_data}
		data = {p = aau(l_data.breath, l_data.accent)}
		data = {p = eu(l_data.breath, l_data.accent)}
		data = {p = hu(l_data.breath, l_data.accent)}
		data = {p = ou(l_data.breath, l_data.accent)}
		data = {p = wu(l_data.breath, l_data.accent)}
	end
end

data = {
	 = "bɡŋdzklmnprstβðɣɸθxfvɟʝcçwʍj",
	 = "aeiouyɛɔ",
	 = high .. low .. midHigh .. midLow .. highMid .. long .. aspirated .. voiceless .. nonsyllabic .. rising .. falling,
	 = "rln",
	 = "bɡdkptβðɣɸθxfv",
	 = "ι",
	 = "ιηευ",
	 = "ϊΐῒῗ",
	 = "ηω",
	 = "εο",
	 = "αιυ",
	 = "αεηο", -- first members for diphthongs ending in "υ"
	 = "αεου", -- first members for diphthongs ending in "ι"
	 = m_utils_data.all,
	 = m_utils_data.consonants
}
data.chars.frontDiphthong = data.chars.frontDiphth

return data