speech-rule-engine
Version:
A standalone speech rule engine for XML structures, based on the original engine from ChromeVox.
1,123 lines • 30.8 kB
JavaScript
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
import { SemanticRole, SemanticType, SemanticFont, SemanticSecondary } from './semantic_meaning.js';
import * as Alphabet from '../speech_rules/alphabet.js';
export const NamedSymbol = {
functionApplication: String.fromCodePoint(0x2061),
invisibleTimes: String.fromCodePoint(0x2062),
invisibleComma: String.fromCodePoint(0x2063),
invisiblePlus: String.fromCodePoint(0x2064)
};
class meaningMap extends Map {
get(symbol) {
return (super.get(symbol) || {
role: SemanticRole.UNKNOWN,
type: SemanticType.UNKNOWN,
font: SemanticFont.UNKNOWN
});
}
}
class secondaryMap extends Map {
set(char, kind, annotation = '') {
super.set(this.secKey(kind, char), annotation || kind);
return this;
}
has(char, kind) {
return super.has(this.secKey(kind, char));
}
get(char, kind) {
return super.get(this.secKey(kind, char));
}
secKey(kind, char) {
return char ? `${kind} ${char}` : `${kind}`;
}
}
export const SemanticMap = {
Meaning: new meaningMap(),
Secondary: new secondaryMap(),
FencesHoriz: new Map(),
FencesVert: new Map(),
LatexCommands: new Map()
};
function addMeaning(symbols, meaning) {
for (const symbol of symbols) {
SemanticMap.Meaning.set(symbol, {
role: meaning.role || SemanticRole.UNKNOWN,
type: meaning.type || SemanticType.UNKNOWN,
font: meaning.font || SemanticFont.UNKNOWN
});
if (meaning.secondary) {
SemanticMap.Secondary.set(symbol, meaning.secondary);
}
}
}
function initMeaning() {
const sets = [
{
set: [
'23',
'26',
'40',
'5c',
'a1',
'a7',
'b6',
'bf',
'2017',
['2022', '2025'],
'2027',
'203b',
'203c',
['2041', '2043'],
['2047', '2049'],
['204b', '204d'],
'2050',
'2055',
'2056',
['2058', '205e'],
'2234',
'2235',
'fe45',
'fe46',
'fe5f',
'fe60',
'fe68',
'fe6b',
'ff03',
'ff06',
'ff0f',
'ff20',
'ff3c'
],
type: SemanticType.PUNCTUATION,
role: SemanticRole.UNKNOWN
},
{
set: [
'22',
'ab',
'bb',
'2dd',
['2018', '201f'],
'2039',
'203a',
['301d', '301f'],
'fe10',
'ff02',
'ff07'
],
type: SemanticType.PUNCTUATION,
role: SemanticRole.QUOTES
},
{
set: ['3b', '204f', '2a1f', '2a3e', 'fe14', 'fe54', 'ff1b'],
type: SemanticType.PUNCTUATION,
role: SemanticRole.SEMICOLON
},
{
set: ['3f', '203d', 'fe16', 'fe56', 'ff1f'],
type: SemanticType.PUNCTUATION,
role: SemanticRole.QUESTION
},
{
set: ['21', 'fe15', 'fe57', 'ff01'],
type: SemanticType.PUNCTUATION,
role: SemanticRole.EXCLAMATION
},
{
set: [
'5e',
'60',
'a8',
'aa',
'b4',
'ba',
'2c7',
['2d8', '2da'],
'2040',
'207a',
'207d',
'207e',
'ff3e',
'ff40'
],
type: SemanticType.PUNCTUATION,
role: SemanticRole.OVERACCENT
},
{
set: ['b8', '2db', '2038', '203f', '2054', '208a', '208d', '208e'],
type: SemanticType.PUNCTUATION,
role: SemanticRole.UNDERACCENT
},
{
set: ['3a', '2982', 'fe13', 'fe30', 'fe55', 'ff1a'],
type: SemanticType.PUNCTUATION,
role: SemanticRole.COLON
},
{
set: ['2c', '2063', 'fe50', 'ff0c'],
type: SemanticType.PUNCTUATION,
role: SemanticRole.COMMA
},
{
set: ['2026', ['22ee', '22f1'], 'fe19'],
type: SemanticType.PUNCTUATION,
role: SemanticRole.ELLIPSIS
},
{
set: ['2e', 'fe52', 'ff0e'],
type: SemanticType.PUNCTUATION,
role: SemanticRole.FULLSTOP
},
{
set: ['2d', '207b', '208b', '2212', '2796', 'fe63', 'ff0d'],
type: SemanticType.OPERATOR,
role: SemanticRole.DASH,
secondary: SemanticSecondary.BAR
},
{
set: [
'5f',
'af',
['2010', '2015'],
'203e',
'208b',
['fe49', 'fe4f'],
'fe58',
'ff3f',
'ffe3'
],
type: SemanticType.PUNCTUATION,
role: SemanticRole.DASH,
secondary: SemanticSecondary.BAR
},
{
set: [
'7e',
'2dc',
'2f7',
'303',
'330',
'334',
'2053',
'223c',
'223d',
'301c',
'ff5e'
],
type: SemanticType.OPERATOR,
role: SemanticRole.TILDE,
secondary: SemanticSecondary.TILDE
},
{
set: ['27', '2b9', '2ba', ['2032', '2037'], '2057'],
type: SemanticType.PUNCTUATION,
role: SemanticRole.PRIME
},
{
set: ['b0'],
type: SemanticType.PUNCTUATION,
role: SemanticRole.DEGREE
},
{
set: [
'2b',
'b1',
'2064',
'2213',
'2214',
'2228',
'222a',
['228c', '228e'],
'2294',
'2295',
'229d',
'229e',
'22bb',
'22bd',
'22c4',
'22ce',
'22d3',
'2304',
'271b',
'271c',
'2795',
'27cf',
'29fa',
'29fb',
'29fe',
['2a22', '2a28'],
'2a2d',
'2a2e',
'2a39',
'2a42',
'2a45',
'2a46',
'2a48',
'2a4a',
'2a4c',
'2a4f',
'2a50',
'2a52',
'2a54',
'2a56',
'2a57',
'2a59',
'2a5b',
'2a5d',
['2a61', '2a63'],
'2adc',
'2add',
'fe62',
'ff0b'
],
type: SemanticType.OPERATOR,
role: SemanticRole.ADDITION
},
{
set: [
'2a',
'b7',
'd7',
'2020',
'2021',
'204e',
'2051',
'2062',
['2217', '2219'],
'2227',
'2229',
'2240',
'2293',
'2297',
['2299', '229b'],
'22a0',
'22a1',
'22b9',
'22bc',
['22c5', '22cc'],
'22cf',
'22d2',
'22d4',
'2303',
'2305',
'2306',
'25cb',
'2715',
'2716',
'27ce',
'27d1',
['29d1', '29d7'],
'29e2',
'2a1d',
['2a2f', '2a37'],
['2a3b', '2a3d'],
'2a40',
'2a43',
'2a44',
'2a47',
'2a49',
'2a4b',
'2a4d',
'2a4e',
'2a51',
'2a53',
'2a55',
'2a58',
'2a5a',
'2a5c',
['2a5e', '2a60'],
'2ada',
'2adb',
'fe61',
'ff0a'
],
type: SemanticType.OPERATOR,
role: SemanticRole.MULTIPLICATION
},
{
set: [
'2d',
'af',
'2010',
'2011',
'2052',
'207b',
'208b',
'2212',
'2216',
'2238',
'2242',
'2296',
'229f',
'2796',
'29ff',
['2a29', '2a2c'],
'2a3a',
'2a41',
'fe63',
'ff0d'
],
type: SemanticType.OPERATOR,
role: SemanticRole.SUBTRACTION
},
{
set: [
'2f',
'f7',
'2044',
'2215',
'2298',
'2797',
'27cc',
'29bc',
['29f5', '29f9'],
'2a38'
],
type: SemanticType.OPERATOR,
role: SemanticRole.DIVISION
},
{
set: ['25', '2030', '2031', 'ff05', 'fe6a'],
type: SemanticType.OPERATOR,
role: SemanticRole.POSTFIXOP
},
{
set: [
'ac',
'2200',
'2201',
'2203',
'2204',
'2206',
['221a', '221c'],
'2310',
'ffe2'
],
type: SemanticType.OPERATOR,
role: SemanticRole.PREFIXOP
},
{
set: [
'2320',
'2321',
'23aa',
'23ae',
'23af',
'23b2',
'23b3',
'23b6',
'23b7'
],
type: SemanticType.OPERATOR,
role: SemanticRole.PREFIXOP
},
{
set: ['1d7ca', '1d7cb'],
type: SemanticType.OPERATOR,
role: SemanticRole.PREFIXOP,
font: SemanticFont.BOLD
},
{
set: [
'3d',
'7e',
'207c',
'208c',
'221d',
'2237',
['223a', '223f'],
'2243',
'2245',
'2248',
['224a', '224e'],
['2251', '225f'],
'2261',
'2263',
'229c',
'22cd',
'22d5',
'29e4',
'29e6',
'2a66',
'2a67',
['2a6a', '2a6c'],
['2a6c', '2a78'],
'fe66',
'ff1d'
],
type: SemanticType.RELATION,
role: SemanticRole.EQUALITY
},
{
set: [
'3c',
'3e',
'2241',
'2242',
'2244',
'2246',
'2247',
'2249',
'224f',
'2250',
'2260',
'2262',
['2264', '2281'],
'22b0',
'22b1',
['22d6', '22e1'],
['22e6', '22e9'],
['2976', '2978'],
'29c0',
'29c1',
'29e1',
'29e3',
'29e5',
['2a79', '2abc'],
['2af7', '2afa'],
'fe64',
'fe65',
'ff1c',
'ff1e'
],
type: SemanticType.RELATION,
role: SemanticRole.INEQUALITY
},
{
set: [
['2282', '228b'],
['228f', '2292'],
['22b2', '22b8'],
'22d0',
'22d1',
['22e2', '22e5'],
['22ea', '22ed'],
'27c3',
'27c4',
['27c7', '27c9'],
['27d5', '27d7'],
'27dc',
['2979', '297b'],
'29df',
['2abd', '2ad8']
],
type: SemanticType.RELATION,
role: SemanticRole.SET
},
{
set: [
'2236',
['27e0', '27e5'],
'292b',
'292c',
['29b5', '29bb'],
'29be',
'29bf',
['29c2', '29d0']
],
type: SemanticType.RELATION,
role: SemanticRole.UNKNOWN
},
{
set: ['2205', ['29b0', '29b4']],
type: SemanticType.IDENTIFIER,
role: SemanticRole.SETEMPTY
},
{
set: ['1ab2', '221e', ['29dc', '29de']],
type: SemanticType.IDENTIFIER,
role: SemanticRole.INFTY
},
{
set: [
'22a2',
'22a3',
['22a6', '22af'],
'27da',
'27db',
'27dd',
'27de',
'2ade',
['2ae2', '2ae6'],
'2aec',
'2aed'
],
type: SemanticType.RELATION,
role: SemanticRole.LOGIC
},
{
set: [
'22a4',
'22a5',
'22ba',
'27d8',
'27d9',
'27df',
'2adf',
'2ae0',
['2ae7', '2aeb'],
'2af1'
],
type: SemanticType.IDENTIFIER,
role: SemanticRole.LOGIC
},
{
set: [
['2190', '21ff'],
'2301',
'2324',
'238b',
'2794',
['2798', '27af'],
['27b1', '27be'],
['27f0', '27ff'],
['2900', '292a'],
['292d', '2975'],
['297c', '297f'],
['2b00', '2b11'],
['2b30', '2b4c'],
['ffe9', 'ffec']
],
type: SemanticType.RELATION,
role: SemanticRole.ARROW
},
{
set: ['2208', '220a', ['22f2', '22f9'], '22ff', '27d2', '2ad9'],
type: SemanticType.OPERATOR,
role: SemanticRole.ELEMENT
},
{
set: ['2209'],
type: SemanticType.OPERATOR,
role: SemanticRole.NONELEMENT
},
{
set: ['220b', '220d', ['22fa', '22fe']],
type: SemanticType.OPERATOR,
role: SemanticRole.REELEMENT
},
{
set: ['220c'],
type: SemanticType.OPERATOR,
role: SemanticRole.RENONELEMENT
},
{
set: [
['220f', '2211'],
['22c0', '22c3'],
['2a00', '2a0b'],
'2a3f',
'2afc',
'2aff'
],
type: SemanticType.LARGEOP,
role: SemanticRole.SUM
},
{
set: ['2140'],
type: SemanticType.LARGEOP,
role: SemanticRole.SUM,
font: SemanticFont.DOUBLESTRUCK
},
{
set: [
['222b', '2233'],
['2a0c', '2a17'],
['2a17', '2a1c']
],
type: SemanticType.LARGEOP,
role: SemanticRole.INTEGRAL
},
{
set: [['2500', '257F']],
type: SemanticType.RELATION,
role: SemanticRole.BOX
},
{
set: [['2580', '259F']],
type: SemanticType.IDENTIFIER,
role: SemanticRole.BLOCK
},
{
set: [
['25A0', '25FF'],
['2B12', '2B2F'],
['2B50', '2B59']
],
type: SemanticType.RELATION,
role: SemanticRole.GEOMETRY
},
{
set: [
'220e',
'2300',
'2302',
'2311',
'29bd',
'29e0',
['29e8', '29f3'],
'2a1e',
'2afe',
'ffed',
'ffee'
],
type: SemanticType.OPERATOR,
role: SemanticRole.GEOMETRY
},
{
set: [
['221f', '2222'],
'22be',
'22bf',
['2312', '2314'],
'237c',
'27c0',
['299b', '29af']
],
type: SemanticType.OPERATOR,
role: SemanticRole.GEOMETRY
},
{
set: [
'24',
['a2', 'a5'],
'b5',
'2123',
['2125', '2127'],
'212a',
'212b',
'fe69',
'ff04',
'ffe0',
'ffe1',
'ffe5',
'ffe6'
],
type: SemanticType.IDENTIFIER,
role: SemanticRole.UNKNOWN
},
{
set: [
'a9',
'ae',
'210f',
'2114',
'2116',
'2117',
['211e', '2122'],
'212e',
'2132',
['2139', '213b'],
['2141', '2144'],
'214d',
'214e',
['1f12a', '1f12c'],
'1f18a'
],
type: SemanticType.IDENTIFIER,
role: SemanticRole.OTHERLETTER
},
{
set: [
'2224',
'2226',
'2239',
'2307',
'27b0',
'27bf',
'27c1',
'27c2',
'27ca',
'27cb',
'27cd',
'27d0',
'27d3',
'27d4',
'2981',
'2999',
'299a',
'29e7',
'29f4',
'2a20',
'2a21',
'2a64',
'2a65',
'2a68',
'2a69',
'2ae1',
['2aee', '2af0'],
'2af2',
'2af3',
'2af5',
'2af6',
'2afb',
'2afd'
],
type: SemanticType.OPERATOR,
role: SemanticRole.UNKNOWN
},
{
set: ['2605', '2606', '26aa', '26ab', ['2720', '274d']],
type: SemanticType.OPERATOR,
role: SemanticRole.UNKNOWN
},
{
set: [['2145', '2149']],
type: SemanticType.IDENTIFIER,
role: SemanticRole.LATINLETTER,
font: SemanticFont.DOUBLESTRUCKITALIC,
secondary: SemanticSecondary.ALLLETTERS
},
{
set: [['213c', '213f']],
type: SemanticType.IDENTIFIER,
role: SemanticRole.GREEKLETTER,
font: SemanticFont.DOUBLESTRUCK,
secondary: SemanticSecondary.ALLLETTERS
},
{
set: [
'3d0',
'3d7',
'3f6',
['1d26', '1d2a'],
'1d5e',
'1d60',
['1d66', '1d6a']
],
type: SemanticType.IDENTIFIER,
role: SemanticRole.GREEKLETTER,
font: SemanticFont.NORMAL,
secondary: SemanticSecondary.ALLLETTERS
},
{
set: [['2135', '2138']],
type: SemanticType.IDENTIFIER,
role: SemanticRole.OTHERLETTER,
font: SemanticFont.NORMAL,
secondary: SemanticSecondary.ALLLETTERS
},
{
set: ['131', '237'],
type: SemanticType.IDENTIFIER,
role: SemanticRole.LATINLETTER,
font: SemanticFont.NORMAL
},
{
set: ['1d6a4', '1d6a5'],
type: SemanticType.IDENTIFIER,
role: SemanticRole.LATINLETTER,
font: SemanticFont.ITALIC
},
{
set: ['2113', '2118'],
type: SemanticType.IDENTIFIER,
role: SemanticRole.LATINLETTER,
font: SemanticFont.SCRIPT
},
{
set: [
['c0', 'd6'],
['d8', 'f6'],
['f8', '1bf'],
['1c4', '2af'],
['1d00', '1d25'],
['1d6b', '1d9a'],
['1e00', '1ef9'],
['363', '36f'],
['1dd3', '1de6'],
['1d62', '1d65'],
'1dca',
'2071',
'207f',
['2090', '209c'],
'2c7c'
],
type: SemanticType.IDENTIFIER,
role: SemanticRole.LATINLETTER,
font: SemanticFont.NORMAL
},
{
set: [['00bc', '00be'], ['2150', '215f'], '2189'],
type: SemanticType.NUMBER,
role: SemanticRole.FLOAT
},
{
set: ['23E8', ['3248', '324f']],
type: SemanticType.NUMBER,
role: SemanticRole.INTEGER
},
{
set: [['214A', '214C'], '2705', '2713', '2714', '2717', '2718'],
type: SemanticType.IDENTIFIER,
role: SemanticRole.UNKNOWN
},
{
set: [
'20',
'a0',
'ad',
['2000', '200f'],
['2028', '202f'],
['205f', '2060'],
'206a',
'206b',
'206e',
'206f',
'feff',
['fff9', 'fffb']
],
type: SemanticType.TEXT,
role: SemanticRole.SPACE
},
{
set: [
'7c',
'a6',
'2223',
'23b8',
'23b9',
'23d0',
'2758',
['fe31', 'fe34'],
'ff5c',
'ffe4',
'ffe8'
],
type: SemanticType.FENCE,
role: SemanticRole.NEUTRAL
},
{
set: ['2016', '2225', '2980', '2af4'],
type: SemanticType.FENCE,
role: SemanticRole.METRIC
}
];
sets.forEach((_a) => {
var { set: s } = _a, m = __rest(_a, ["set"]);
return addMeaning(Alphabet.makeMultiInterval(s), m);
});
}
function addFences(map, ints, sep = 1) {
const used = {};
const codes = Alphabet.makeCodeInterval(ints);
for (const code of codes) {
if (used[code])
continue;
map.set(String.fromCodePoint(code), String.fromCodePoint(code + sep));
used[code] = true;
used[code + sep] = true;
}
}
function initFences() {
addFences(SemanticMap.FencesVert, [
'23b4',
['23dc', '23e1'],
['fe35', 'fe44'],
'fe47'
]);
addFences(SemanticMap.FencesHoriz, [
'28',
'2045',
['2308', '230f'],
['231c', '231f'],
'2329',
'23b0',
['2768', '2775'],
'27c5',
['27e6', '27ef'],
['2983', '2998'],
['29d8', '29db'],
'29fc',
['2e22', '2e29'],
['3008', '3011'],
['3014', '301b'],
'fd3e',
'fe17',
['fe59', 'fe5e'],
'ff08',
'ff5f',
'ff62'
]);
addFences(SemanticMap.FencesHoriz, ['5b', '7b', 'ff3b', 'ff5b'], 2);
addFences(SemanticMap.FencesHoriz, [['239b', '23a6']], 3);
addFences(SemanticMap.FencesHoriz, [['23a7', '23a9']], 4);
addMeaning([...SemanticMap.FencesHoriz.keys()], {
type: SemanticType.FENCE,
role: SemanticRole.OPEN
});
addMeaning([...SemanticMap.FencesHoriz.values()], {
type: SemanticType.FENCE,
role: SemanticRole.CLOSE
});
addMeaning([...SemanticMap.FencesVert.keys()], {
type: SemanticType.FENCE,
role: SemanticRole.TOP
});
addMeaning([...SemanticMap.FencesVert.values()], {
type: SemanticType.FENCE,
role: SemanticRole.BOTTOM
});
}
const trigonometricFunctions = [
'cos',
'cot',
'csc',
'sec',
'sin',
'tan',
'arccos',
'arccot',
'arccsc',
'arcsec',
'arcsin',
'arctan'
];
const hyperbolicFunctions = [
'cosh',
'coth',
'csch',
'sech',
'sinh',
'tanh',
'arcosh',
'arcoth',
'arcsch',
'arsech',
'arsinh',
'artanh'
];
const algebraicFunctions = ['deg', 'det', 'dim', 'hom', 'ker', 'Tr'];
const elementaryFunctions = [
'log',
'ln',
'lg',
'exp',
'gcd',
'lcm',
'arg',
'im',
're',
'Pr'
];
const prefixFunctions = trigonometricFunctions.concat(hyperbolicFunctions, algebraicFunctions, elementaryFunctions);
function initFunctions() {
addMeaning([
'inf',
'lim',
'liminf',
'limsup',
'max',
'min',
'sup',
'injlim',
'projlim'
], {
type: SemanticType.FUNCTION,
role: SemanticRole.LIMFUNC
});
addMeaning(prefixFunctions, {
type: SemanticType.FUNCTION,
role: SemanticRole.PREFIXFUNC
});
addMeaning(['mod', 'rem'], {
type: SemanticType.OPERATOR,
role: SemanticRole.PREFIXFUNC
});
}
export function addFunctionSemantic(base, names) {
const meaning = SemanticMap.Meaning.get(base) || {
type: SemanticType.FUNCTION,
role: SemanticRole.PREFIXFUNC
};
addMeaning(names, meaning);
}
export function equal(meaning1, meaning2) {
return (meaning1.type === meaning2.type &&
meaning1.role === meaning2.role &&
meaning1.font === meaning2.font);
}
export function isMatchingFence(open, close) {
const meaning = SemanticMap.Meaning.get(open);
if (meaning.type !== SemanticType.FENCE) {
return false;
}
if (meaning.role === SemanticRole.NEUTRAL ||
meaning.role === SemanticRole.METRIC) {
return open === close;
}
return (SemanticMap.FencesHoriz.get(open) === close ||
SemanticMap.FencesVert.get(open) === close);
}
function changeSemantics(alphabet, change) {
for (const [pos, meaning] of Object.entries(change)) {
const character = alphabet[pos];
if (character !== undefined) {
SemanticMap.Meaning.set(character, meaning);
}
}
}
function addSecondaries(alphabet, change) {
for (const [pos, meaning] of Object.entries(change)) {
const character = alphabet[pos];
if (character !== undefined) {
SemanticMap.Secondary.set(character, meaning);
}
}
}
function singleAlphabet(alphabet, type, role, font, semfont, secondaries = [], change = {}, secondary = {}) {
const interval = Alphabet.INTERVALS.get(Alphabet.alphabetName(alphabet, font));
if (interval) {
interval.unicode.forEach((x) => {
SemanticMap.Meaning.set(x, {
type: type,
role: role,
font: semfont
});
secondaries.forEach((sec) => SemanticMap.Secondary.set(x, sec));
});
changeSemantics(interval.unicode, change);
addSecondaries(interval.unicode, secondary);
}
}
function initAlphabets() {
for (const [name, font] of Object.entries(SemanticFont)) {
const emb = !!Alphabet.Embellish[name];
const semfont = emb
? SemanticFont.UNKNOWN
: font === SemanticFont.FULLWIDTH
? SemanticFont.NORMAL
: font;
singleAlphabet(Alphabet.Base.LATINCAP, SemanticType.IDENTIFIER, SemanticRole.LATINLETTER, font, semfont, [SemanticSecondary.ALLLETTERS]);
singleAlphabet(Alphabet.Base.LATINSMALL, SemanticType.IDENTIFIER, SemanticRole.LATINLETTER, font, semfont, [SemanticSecondary.ALLLETTERS], {}, { 3: SemanticSecondary.D });
singleAlphabet(Alphabet.Base.GREEKCAP, SemanticType.IDENTIFIER, SemanticRole.GREEKLETTER, font, semfont, [SemanticSecondary.ALLLETTERS]);
singleAlphabet(Alphabet.Base.GREEKSMALL, SemanticType.IDENTIFIER, SemanticRole.GREEKLETTER, font, semfont, [SemanticSecondary.ALLLETTERS], {
0: {
type: SemanticType.OPERATOR,
role: SemanticRole.PREFIXOP,
font: semfont
},
26: {
type: SemanticType.OPERATOR,
role: SemanticRole.PREFIXOP,
font: semfont
}
});
singleAlphabet(Alphabet.Base.DIGIT, SemanticType.NUMBER, SemanticRole.INTEGER, font, semfont);
}
}
initMeaning();
initFences();
initAlphabets();
initFunctions();
//# sourceMappingURL=semantic_attr.js.map