, 'value' | 'onChange'> {
@@ -26,7 +26,7 @@ function SelectGrammeme({
.filter(data => Object.values(Grammeme).includes(data.value as Grammeme))
.map(data => data.value as Grammeme)
);
- setOptions(SelectorGrammems.filter(({value}) => compatible.includes(value as Grammeme)));
+ setOptions(SelectorGrammemes.filter(({value}) => compatible.includes(value as Grammeme)));
}, [value]);
return (
diff --git a/rsconcept/frontend/src/dialogs/DlgEditReference/EntityTab.tsx b/rsconcept/frontend/src/dialogs/DlgEditReference/EntityTab.tsx
index dd266188..d1caa7b8 100644
--- a/rsconcept/frontend/src/dialogs/DlgEditReference/EntityTab.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgEditReference/EntityTab.tsx
@@ -13,7 +13,7 @@ import { CstMatchMode } from '@/models/miscellaneous';
import { IConstituenta } from '@/models/rsform';
import { matchConstituenta } from '@/models/rsformAPI';
import { prefixes } from '@/utils/constants';
-import { IGrammemeOption, SelectorGrammems } from '@/utils/selectors';
+import { IGrammemeOption, SelectorGrammemes } from '@/utils/selectors';
import { IReferenceInputState } from './DlgEditReference';
import SelectWordForm from './SelectWordForm';
@@ -38,7 +38,7 @@ function EntityTab({ initial, items, setIsValid, setReference }: EntityTabProps)
const ref = parseEntityReference(initial.refRaw);
setAlias(ref.entity);
const grams = parseGrammemes(ref.form);
- setSelectedGrams(SelectorGrammems.filter(data => grams.includes(data.value)));
+ setSelectedGrams(SelectorGrammemes.filter(data => grams.includes(data.value)));
}
}, [initial, items]);
@@ -70,7 +70,7 @@ function EntityTab({ initial, items, setIsValid, setReference }: EntityTabProps)
prefixID={prefixes.cst_modal_list}
describeFunc={cst => cst.term_resolved}
matchFunc={(cst, filter) => matchConstituenta(cst, filter, CstMatchMode.TERM)}
- prefilterFunc={cst => cst.term_resolved !== ''}
+ onBeginFilter={cst => cst.term_resolved !== ''}
rows={8}
/>
diff --git a/rsconcept/frontend/src/dialogs/DlgEditReference/SelectWordForm.tsx b/rsconcept/frontend/src/dialogs/DlgEditReference/SelectWordForm.tsx
index f1bfa841..394fb668 100644
--- a/rsconcept/frontend/src/dialogs/DlgEditReference/SelectWordForm.tsx
+++ b/rsconcept/frontend/src/dialogs/DlgEditReference/SelectWordForm.tsx
@@ -4,7 +4,7 @@ import { useCallback } from 'react';
import { Grammeme } from '@/models/language';
import { prefixes } from '@/utils/constants';
-import { IGrammemeOption, PremadeWordForms, SelectorGrammems } from '@/utils/selectors';
+import { IGrammemeOption, DefaultWordForms, SelectorGrammemes } from '@/utils/selectors';
import WordformButton from './WordformButton';
@@ -16,12 +16,12 @@ interface SelectWordFormProps {
function SelectWordForm({ selected, setSelected }: SelectWordFormProps) {
const handleSelect = useCallback(
(grams: Grammeme[]) => {
- setSelected(SelectorGrammems.filter(({value}) => grams.includes(value as Grammeme)));
+ setSelected(SelectorGrammemes.filter(({value}) => grams.includes(value as Grammeme)));
}, [setSelected]);
return (
- {PremadeWordForms.slice(0, 12).map(
+ {DefaultWordForms.slice(0, 12).map(
(data, index) =>
form.grams.find(test => test === gram.value)));
+ setInputGrams(SelectorGrammemes.filter(gram => form.grams.find(test => test === gram.value)));
}
function handleInflect() {
@@ -88,7 +88,7 @@ function DlgEditWordForms({ hideWindow, target, onSave }: DlgEditWordFormsProps)
}
textProcessor.parse(data, response => {
const grams = parseGrammemes(response.result);
- setInputGrams(SelectorGrammems.filter(gram => grams.find(test => test === gram.value)));
+ setInputGrams(SelectorGrammemes.filter(gram => grams.find(test => test === gram.value)));
});
}
diff --git a/rsconcept/frontend/src/hooks/useCheckExpression.ts b/rsconcept/frontend/src/hooks/useCheckExpression.ts
index c644583f..c1d2f675 100644
--- a/rsconcept/frontend/src/hooks/useCheckExpression.ts
+++ b/rsconcept/frontend/src/hooks/useCheckExpression.ts
@@ -9,7 +9,7 @@ import { RSErrorType } from '@/models/rslang';
import { DataCallback, postCheckExpression } from '@/utils/backendAPI';
import { getCstExpressionPrefix } from '@/utils/misc';
-const LOGIC_TYPIIFCATION = 'LOGIC';
+const LOGIC_TYPIFICATION = 'LOGIC';
function useCheckExpression({ schema }: { schema?: IRSForm }) {
const [loading, setLoading] = useState(false);
@@ -18,7 +18,11 @@ function useCheckExpression({ schema }: { schema?: IRSForm }) {
const resetParse = useCallback(() => setParseData(undefined), []);
- function checkExpression(expression: string, activeCst?: IConstituenta, onSuccess?: DataCallback) {
+ function checkExpression(
+ expression: string,
+ activeCst?: IConstituenta,
+ onSuccess?: DataCallback
+ ) {
setError(undefined);
postCheckExpression(String(schema!.id), {
data: { expression: expression },
@@ -41,24 +45,23 @@ function useCheckExpression({ schema }: { schema?: IRSForm }) {
export default useCheckExpression;
// ===== Internals ========
-
function checkTypeConsistency(type: CstType, typification: string, args: IArgumentInfo[]): boolean {
switch (type) {
case CstType.BASE:
case CstType.CONSTANT:
case CstType.STRUCTURED:
case CstType.TERM:
- return typification !== LOGIC_TYPIIFCATION && args.length === 0;
+ return typification !== LOGIC_TYPIFICATION && args.length === 0;
case CstType.AXIOM:
case CstType.THEOREM:
- return typification === LOGIC_TYPIIFCATION && args.length === 0;
+ return typification === LOGIC_TYPIFICATION && args.length === 0;
case CstType.FUNCTION:
- return typification !== LOGIC_TYPIIFCATION && args.length !== 0;
+ return typification !== LOGIC_TYPIFICATION && args.length !== 0;
case CstType.PREDICATE:
- return typification === LOGIC_TYPIIFCATION && args.length !== 0;
+ return typification === LOGIC_TYPIFICATION && args.length !== 0;
}
}
@@ -75,6 +78,7 @@ function adjustResults(parse: IExpressionParse, emptyExpression: boolean, cstTyp
params: [],
position: 0
});
+ return;
}
} else {
if (emptyExpression) {
@@ -85,6 +89,7 @@ function adjustResults(parse: IExpressionParse, emptyExpression: boolean, cstTyp
params: [],
position: 0
});
+ return;
}
}
if (!checkTypeConsistency(cstType, parse.typification, parse.args)) {
diff --git a/rsconcept/frontend/src/models/rslang.ts b/rsconcept/frontend/src/models/rslang.ts
index ca617e2a..2e61b462 100644
--- a/rsconcept/frontend/src/models/rslang.ts
+++ b/rsconcept/frontend/src/models/rslang.ts
@@ -106,10 +106,10 @@ export enum TokenID {
ID_PREDICATE,
ID_RADICAL,
LIT_INTEGER,
- LIT_INTSET,
+ LIT_WHOLE_NUMBERS,
LIT_EMPTYSET,
- // Aithmetic
+ // Arithmetic
PLUS,
MINUS,
MULTIPLY,
@@ -125,27 +125,27 @@ export enum TokenID {
NOTEQUAL,
// Logic predicate symbols
- FORALL,
- EXISTS,
- NOT,
- EQUIVALENT,
- IMPLICATION,
- OR,
- AND,
+ QUANTOR_UNIVERSAL,
+ QUANTOR_EXISTS,
+ LOGIC_NOT,
+ LOGIC_EQUIVALENT,
+ LOGIC_IMPLICATION,
+ LOGIC_OR,
+ LOGIC_AND,
// Set theory predicate symbols
- IN,
- NOTIN,
+ SET_IN,
+ SET_NOT_IN,
SUBSET,
SUBSET_OR_EQ,
- NOTSUBSET,
+ NOT_SUBSET,
// Set theory operators
DECART,
- UNION,
- INTERSECTION,
+ SET_UNION,
+ SET_INTERSECTION,
SET_MINUS,
- SYMMINUS,
+ SET_SYMMETRIC_MINUS,
BOOLEAN,
// Structure operations
@@ -163,19 +163,19 @@ export enum TokenID {
IMPERATIVE,
// Punctuation
- PUNC_DEFINE,
- PUNC_STRUCT,
- PUNC_ASSIGN,
- PUNC_ITERATE,
- PUNC_PL,
- PUNC_PR,
- PUNC_CL,
- PUNC_CR,
- PUNC_SL,
- PUNC_SR,
- PUNC_BAR,
- PUNC_COMMA,
- PUNC_SEMICOLON,
+ PUNCTUATION_DEFINE,
+ PUNCTUATION_STRUCT,
+ PUNCTUATION_ASSIGN,
+ PUNCTUATION_ITERATE,
+ PUNCTUATION_PL,
+ PUNCTUATION_PR,
+ PUNCTUATION_CL,
+ PUNCTUATION_CR,
+ PUNCTUATION_SL,
+ PUNCTUATION_SR,
+ PUNCTUATION_BAR,
+ PUNCTUATION_COMMA,
+ PUNCTUATION_SEMICOLON,
// ======= Non-terminal tokens =========
NT_ENUM_DECL,
diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSExpression/RSEditControls.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSExpression/RSEditControls.tsx
index 5cf454a8..652ee232 100644
--- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSExpression/RSEditControls.tsx
+++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSExpression/RSEditControls.tsx
@@ -21,34 +21,34 @@ const MAIN_FIRST_ROW: TokenID[] = [
const MAIN_SECOND_ROW: TokenID[] = [
TokenID.BOOLEAN,
- TokenID.PUNC_PL,
- TokenID.INTERSECTION,
+ TokenID.PUNCTUATION_PL,
+ TokenID.SET_INTERSECTION,
TokenID.LIT_EMPTYSET,
- TokenID.FORALL,
- TokenID.NOT,
- TokenID.IN,
+ TokenID.QUANTOR_UNIVERSAL,
+ TokenID.LOGIC_NOT,
+ TokenID.SET_IN,
TokenID.SUBSET_OR_EQ,
- TokenID.AND,
- TokenID.IMPLICATION,
+ TokenID.LOGIC_AND,
+ TokenID.LOGIC_IMPLICATION,
TokenID.SET_MINUS,
- TokenID.PUNC_ITERATE,
+ TokenID.PUNCTUATION_ITERATE,
TokenID.SUBSET,
TokenID.DEBOOL
];
const MAIN_THIRD_ROW: TokenID[] = [
TokenID.DECART,
- TokenID.PUNC_SL,
- TokenID.UNION,
- TokenID.LIT_INTSET,
- TokenID.EXISTS,
+ TokenID.PUNCTUATION_SL,
+ TokenID.SET_UNION,
+ TokenID.LIT_WHOLE_NUMBERS,
+ TokenID.QUANTOR_EXISTS,
TokenID.NOTEQUAL,
- TokenID.NOTIN,
- TokenID.NOTSUBSET,
- TokenID.OR,
- TokenID.EQUIVALENT,
- TokenID.SYMMINUS,
- TokenID.PUNC_ASSIGN,
+ TokenID.SET_NOT_IN,
+ TokenID.NOT_SUBSET,
+ TokenID.LOGIC_OR,
+ TokenID.LOGIC_EQUIVALENT,
+ TokenID.SET_SYMMETRIC_MINUS,
+ TokenID.PUNCTUATION_ASSIGN,
TokenID.EQUAL,
TokenID.GREATER_OR_EQ,
TokenID.LESSER_OR_EQ
diff --git a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/RSFormToolbar.tsx b/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/RSFormToolbar.tsx
index 3ceb645e..89354383 100644
--- a/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/RSFormToolbar.tsx
+++ b/rsconcept/frontend/src/pages/RSFormPage/EditorRSForm/RSFormToolbar.tsx
@@ -52,7 +52,7 @@ function RSFormToolbar({
onClick={onDownload}
/>
diff --git a/rsconcept/frontend/src/utils/Graph.test.ts b/rsconcept/frontend/src/utils/Graph.test.ts
index 80ce482f..91217eb6 100644
--- a/rsconcept/frontend/src/utils/Graph.test.ts
+++ b/rsconcept/frontend/src/utils/Graph.test.ts
@@ -45,7 +45,7 @@ describe('Testing Graph editing', () => {
expect(graph.hasEdge(4, 1)).toBeFalsy();
});
- test('folding node redirectes edges', () => {
+ test('folding node redirects edges', () => {
const graph = new Graph([[1, 3], [2, 3], [3, 4], [3, 5], [3, 3]]);
graph.foldNode(3);
expect(graph.hasNode(3)).toBeFalsy();
@@ -73,7 +73,7 @@ describe('Testing Graph editing', () => {
describe('Testing Graph sort', () => {
test('topological order', () => {
const graph = new Graph([[9, 1], [9, 2], [2, 1], [4, 3], [5, 9]]);
- expect(graph.tolopogicalOrder()).toStrictEqual([5, 4, 3, 9, 2, 1]);
+ expect(graph.topologicalOrder()).toStrictEqual([5, 4, 3, 9, 2, 1]);
});
});
diff --git a/rsconcept/frontend/src/utils/Graph.ts b/rsconcept/frontend/src/utils/Graph.ts
index aa587c4d..189f726a 100644
--- a/rsconcept/frontend/src/utils/Graph.ts
+++ b/rsconcept/frontend/src/utils/Graph.ts
@@ -202,7 +202,7 @@ export class Graph {
return result;
}
- tolopogicalOrder(): number[] {
+ topologicalOrder(): number[] {
const result: number[] = [];
const marked = new Map();
const toVisit: number[] = [];
@@ -235,7 +235,7 @@ export class Graph {
}
transitiveReduction() {
- const order = this.tolopogicalOrder();
+ const order = this.topologicalOrder();
const marked = new Map();
order.forEach(nodeID => {
if (marked.get(nodeID)) {
diff --git a/rsconcept/frontend/src/utils/backendAPI.ts b/rsconcept/frontend/src/utils/backendAPI.ts
index 216282a2..d34800a2 100644
--- a/rsconcept/frontend/src/utils/backendAPI.ts
+++ b/rsconcept/frontend/src/utils/backendAPI.ts
@@ -203,7 +203,7 @@ export function deleteLibraryItem(target: string, request: FrontAction) {
export function postClaimLibraryItem(target: string, request: FrontPull) {
AxiosPost({
- title: `Claim on LibrartyItem id=${target}`,
+ title: `Claim on LibraryItem id=${target}`,
endpoint: `/api/library/${target}/claim`,
request: request
});
@@ -211,7 +211,7 @@ export function postClaimLibraryItem(target: string, request: FrontPull) {
AxiosPatch({
title: `Delete Constituents for RSForm id=${schema}: ${request.data.items.map(item => String(item)).join(' ')}`,
- endpoint: `/api/rsforms/${schema}/cst-multidelete`,
+ endpoint: `/api/rsforms/${schema}/cst-delete-multiple`,
request: request
});
}
diff --git a/rsconcept/frontend/src/utils/color.ts b/rsconcept/frontend/src/utils/color.ts
index 10602d4b..9e4eb8a1 100644
--- a/rsconcept/frontend/src/utils/color.ts
+++ b/rsconcept/frontend/src/utils/color.ts
@@ -28,7 +28,7 @@ export interface IColorTheme {
fgDisabled: string
fgWarning: string
- // Hightlight syntax accents
+ // Highlight syntax accents
bgRed: string
bgGreen: string
bgBlue: string
@@ -64,7 +64,7 @@ export const lightT: IColorTheme = {
fgDisabled: 'var(--cl-fg-80)',
fgWarning: 'var(--cl-red-fg-100)',
- // Hightlight syntax accents
+ // Highlight syntax accents
bgRed: 'hsl(000, 100%, 089%)',
bgGreen: 'hsl(100, 100%, 075%)',
bgBlue: 'hsl(235, 080%, 087%)',
@@ -100,7 +100,7 @@ export const darkT: IColorTheme = {
fgDisabled: 'var(--cd-fg-80)',
fgWarning: 'var(--cd-red-fg-100)',
- // Hightlight syntax accents
+ // Highlight syntax accents
bgRed: 'hsl(000, 080%, 037%)',
bgGreen: 'hsl(100, 080%, 025%)',
bgBlue: 'hsl(235, 054%, 049%)',
@@ -303,8 +303,8 @@ export const bracketsDarkT = {
*/
export function colorBgSyntaxTree(node: ISyntaxTreeNode, colors: IColorTheme): string {
switch (node.typeID) {
- case TokenID.PUNC_DEFINE:
- case TokenID.PUNC_STRUCT:
+ case TokenID.PUNCTUATION_DEFINE:
+ case TokenID.PUNCTUATION_STRUCT:
case TokenID.ID_LOCAL:
return colors.bgGreen;
@@ -314,27 +314,27 @@ export function colorBgSyntaxTree(node: ISyntaxTreeNode, colors: IColorTheme): s
case TokenID.ID_RADICAL:
case TokenID.LIT_INTEGER:
case TokenID.LIT_EMPTYSET:
- case TokenID.LIT_INTSET:
+ case TokenID.LIT_WHOLE_NUMBERS:
return colors.bgTeal;
- case TokenID.FORALL:
- case TokenID.EXISTS:
- case TokenID.NOT:
- case TokenID.AND:
- case TokenID.OR:
- case TokenID.IMPLICATION:
- case TokenID.EQUIVALENT:
+ case TokenID.QUANTOR_UNIVERSAL:
+ case TokenID.QUANTOR_EXISTS:
+ case TokenID.LOGIC_NOT:
+ case TokenID.LOGIC_AND:
+ case TokenID.LOGIC_OR:
+ case TokenID.LOGIC_IMPLICATION:
+ case TokenID.LOGIC_EQUIVALENT:
case TokenID.GREATER:
case TokenID.LESSER:
case TokenID.EQUAL:
case TokenID.NOTEQUAL:
case TokenID.GREATER_OR_EQ:
case TokenID.LESSER_OR_EQ:
- case TokenID.IN:
- case TokenID.NOTIN:
+ case TokenID.SET_IN:
+ case TokenID.SET_NOT_IN:
case TokenID.SUBSET_OR_EQ:
case TokenID.SUBSET:
- case TokenID.NOTSUBSET:
+ case TokenID.NOT_SUBSET:
return colors.bgOrange;
case TokenID.NT_TUPLE:
@@ -347,10 +347,10 @@ export function colorBgSyntaxTree(node: ISyntaxTreeNode, colors: IColorTheme): s
case TokenID.MULTIPLY:
case TokenID.BOOLEAN:
case TokenID.DECART:
- case TokenID.INTERSECTION:
- case TokenID.UNION:
+ case TokenID.SET_INTERSECTION:
+ case TokenID.SET_UNION:
case TokenID.SET_MINUS:
- case TokenID.SYMMINUS:
+ case TokenID.SET_SYMMETRIC_MINUS:
case TokenID.REDUCE:
case TokenID.CARD:
case TokenID.BOOL:
@@ -372,8 +372,8 @@ export function colorBgSyntaxTree(node: ISyntaxTreeNode, colors: IColorTheme): s
case TokenID.NT_RECURSIVE_SHORT:
return '';
- case TokenID.PUNC_ASSIGN:
- case TokenID.PUNC_ITERATE:
+ case TokenID.PUNCTUATION_ASSIGN:
+ case TokenID.PUNCTUATION_ITERATE:
return colors.bgRed;
}
// node
diff --git a/rsconcept/frontend/src/utils/labels.ts b/rsconcept/frontend/src/utils/labels.ts
index cc821f1e..a42848eb 100644
--- a/rsconcept/frontend/src/utils/labels.ts
+++ b/rsconcept/frontend/src/utils/labels.ts
@@ -5,9 +5,15 @@
* Description is a long description used in tooltips.
*/
import { GramData,Grammeme, ReferenceType } from '@/models/language';
-import { CstMatchMode, DependencyMode, HelpTopic, LibraryFilterStrategy, UserAccessMode } from '@/models/miscellaneous';
+import {
+ CstMatchMode, DependencyMode, HelpTopic,
+ LibraryFilterStrategy, UserAccessMode
+} from '@/models/miscellaneous';
import { CstClass, CstType, ExpressionStatus, IConstituenta } from '@/models/rsform';
-import { IArgumentInfo, IRSErrorDescription, ISyntaxTreeNode, ParsingStatus, RSErrorType, TokenID } from '@/models/rslang';
+import {
+ IArgumentInfo, IRSErrorDescription, ISyntaxTreeNode,
+ ParsingStatus, RSErrorType, TokenID
+} from '@/models/rslang';
/**
* Generates description for {@link IConstituenta}.
@@ -56,88 +62,88 @@ export function labelConstituenta(cst: IConstituenta) {
*/
export function labelToken(id: TokenID): string {
switch (id) {
- case TokenID.BOOLEAN: return 'ℬ()';
- case TokenID.DECART: return '×';
- case TokenID.PUNC_PL: return '( )';
- case TokenID.PUNC_SL: return '[ ]';
- case TokenID.FORALL: return '∀';
- case TokenID.EXISTS: return '∃';
- case TokenID.NOT: return '¬';
- case TokenID.AND: return '&';
- case TokenID.OR: return '∨';
- case TokenID.IMPLICATION: return '⇒';
- case TokenID.EQUIVALENT: return '⇔';
- case TokenID.LIT_EMPTYSET: return '∅';
- case TokenID.LIT_INTSET: return 'Z';
- case TokenID.EQUAL: return '=';
- case TokenID.NOTEQUAL: return '≠';
- case TokenID.GREATER_OR_EQ: return '≥';
- case TokenID.LESSER_OR_EQ: return '≤';
- case TokenID.IN: return '∈';
- case TokenID.NOTIN: return '∉';
- case TokenID.SUBSET_OR_EQ: return '⊆';
- case TokenID.SUBSET: return '⊂';
- case TokenID.NOTSUBSET: return '⊄';
- case TokenID.INTERSECTION: return '∩';
- case TokenID.UNION: return '∪';
- case TokenID.SET_MINUS: return '\\';
- case TokenID.SYMMINUS: return '∆';
+ case TokenID.BOOLEAN: return 'ℬ()';
+ case TokenID.DECART: return '×';
+ case TokenID.PUNCTUATION_PL: return '( )';
+ case TokenID.PUNCTUATION_SL: return '[ ]';
+ case TokenID.QUANTOR_UNIVERSAL: return '∀';
+ case TokenID.QUANTOR_EXISTS: return '∃';
+ case TokenID.LOGIC_NOT: return '¬';
+ case TokenID.LOGIC_AND: return '&';
+ case TokenID.LOGIC_OR: return '∨';
+ case TokenID.LOGIC_IMPLICATION: return '⇒';
+ case TokenID.LOGIC_EQUIVALENT: return '⇔';
+ case TokenID.LIT_EMPTYSET: return '∅';
+ case TokenID.LIT_WHOLE_NUMBERS: return 'Z';
+ case TokenID.EQUAL: return '=';
+ case TokenID.NOTEQUAL: return '≠';
+ case TokenID.GREATER_OR_EQ: return '≥';
+ case TokenID.LESSER_OR_EQ: return '≤';
+ case TokenID.SET_IN: return '∈';
+ case TokenID.SET_NOT_IN: return '∉';
+ case TokenID.SUBSET_OR_EQ: return '⊆';
+ case TokenID.SUBSET: return '⊂';
+ case TokenID.NOT_SUBSET: return '⊄';
+ case TokenID.SET_INTERSECTION: return '∩';
+ case TokenID.SET_UNION: return '∪';
+ case TokenID.SET_MINUS: return '\\';
+ case TokenID.SET_SYMMETRIC_MINUS: return '∆';
case TokenID.NT_DECLARATIVE_EXPR: return 'D{}';
case TokenID.NT_IMPERATIVE_EXPR: return 'I{}';
case TokenID.NT_RECURSIVE_FULL: return 'R{}';
- case TokenID.BIGPR: return 'Pr1()';
- case TokenID.SMALLPR: return 'pr1()';
- case TokenID.FILTER: return 'Fi1[]()';
- case TokenID.REDUCE: return 'red()';
- case TokenID.CARD: return 'card()';
- case TokenID.BOOL: return 'bool()';
- case TokenID.DEBOOL: return 'debool()';
- case TokenID.PUNC_ASSIGN: return ':=';
- case TokenID.PUNC_ITERATE: return ':∈';
+ case TokenID.BIGPR: return 'Pr1()';
+ case TokenID.SMALLPR: return 'pr1()';
+ case TokenID.FILTER: return 'Fi1[]()';
+ case TokenID.REDUCE: return 'red()';
+ case TokenID.CARD: return 'card()';
+ case TokenID.BOOL: return 'bool()';
+ case TokenID.DEBOOL: return 'debool()';
+ case TokenID.PUNCTUATION_ASSIGN: return ':=';
+ case TokenID.PUNCTUATION_ITERATE: return ':∈';
}
return `no label: ${id}`;
}
export function describeToken(id: TokenID): string {
switch (id) {
- case TokenID.BOOLEAN: return 'Булеан [Alt + E / Shift + B]';
- case TokenID.DECART: return 'Декартово произведение [Alt + Shift + E / Shift + 8]';
- case TokenID.PUNC_PL: return 'Скобки вокруг выражения [Alt + Shift + 9 ]';
- case TokenID.PUNC_SL: return 'Скобки вокруг выражения [Alt + [ ]';
- case TokenID.FORALL: return 'Квантор всеобщности [`]';
- case TokenID.EXISTS: return 'Квантор существования [Shift + `]';
- case TokenID.NOT: return 'Отрицание [Alt + `]';
- case TokenID.AND: return 'Конъюнкция [Alt + 3 ~ Shift + 7]';
- case TokenID.OR: return 'Дизъюнкция [Alt + Shift + 3]';
- case TokenID.IMPLICATION: return 'Импликация [Alt + 4]';
- case TokenID.EQUIVALENT: return 'Эквивалентность [Alt + Shift + 4]';
- case TokenID.LIT_EMPTYSET: return 'Пустое множество [Alt + X]';
- case TokenID.LIT_INTSET: return 'Целые числа [Alt + Z]';
- case TokenID.EQUAL: return 'Равенство';
- case TokenID.NOTEQUAL: return 'Неравенство [Alt + Shift + `]';
- case TokenID.GREATER_OR_EQ: return 'Больше или равно [Alt + Shift + 7]';
- case TokenID.LESSER_OR_EQ: return 'Меньше или равно [Alt + Shift + 8]';
- case TokenID.IN: return 'Быть элементом (принадлежит) [Alt + 1]';
- case TokenID.NOTIN: return 'Не принадлежит [Alt + Shift + 1]';
- case TokenID.SUBSET_OR_EQ: return 'Быть частью (нестрогое подмножество) [Alt + 2]';
- case TokenID.SUBSET: return 'Строгое подмножество [Alt + 7]';
- case TokenID.NOTSUBSET: return 'Не подмножество [Alt + Shift + 2]';
- case TokenID.INTERSECTION: return 'Пересечение [Alt + A]';
- case TokenID.UNION: return 'Объединение [Alt + S]';
- case TokenID.SET_MINUS: return 'Разность множеств [Alt + 5]';
- case TokenID.SYMMINUS: return 'Симметрическая разность [Alt + Shift + 5]';
- case TokenID.NT_DECLARATIVE_EXPR: return 'Декларативная форма определения терма [Alt + D]';
- case TokenID.NT_IMPERATIVE_EXPR: return 'Императивная форма определения терма [Alt + G]';
- case TokenID.NT_RECURSIVE_FULL: return 'Рекурсивная (цикличная) форма определения терма [Alt + T]';
- case TokenID.BIGPR: return 'Большая проекция [Alt + Q]';
- case TokenID.SMALLPR: return 'Малая проекция [Alt + W]';
- case TokenID.FILTER: return 'Фильтр [Alt + F]';
- case TokenID.REDUCE: return 'Множество-сумма [Alt + R]';
- case TokenID.CARD: return 'Мощность [Alt + C]';
- case TokenID.BOOL: return 'Синглетон [Alt + B]';
- case TokenID.DEBOOL: return 'Десинглетон [Alt + V]';
- case TokenID.PUNC_ASSIGN: return 'Присвоение (императивный синтаксис) [Alt + Shift + 6]';
- case TokenID.PUNC_ITERATE: return 'Перебор элементов множества (императивный синтаксис) [Alt + 6]';
+ case TokenID.BOOLEAN: return 'Булеан [Alt + E / Shift + B]';
+ case TokenID.DECART: return 'Декартово произведение [Alt + Shift + E / Shift + 8]';
+ case TokenID.PUNCTUATION_PL: return 'Скобки вокруг выражения [Alt + Shift + 9 ]';
+ case TokenID.PUNCTUATION_SL: return 'Скобки вокруг выражения [Alt + [ ]';
+ case TokenID.QUANTOR_UNIVERSAL: return 'Квантор всеобщности [`]';
+ case TokenID.QUANTOR_EXISTS: return 'Квантор существования [Shift + `]';
+ case TokenID.LOGIC_NOT: return 'Отрицание [Alt + `]';
+ case TokenID.LOGIC_AND: return 'Конъюнкция [Alt + 3 ~ Shift + 7]';
+ case TokenID.LOGIC_OR: return 'Дизъюнкция [Alt + Shift + 3]';
+ case TokenID.LOGIC_IMPLICATION: return 'Импликация [Alt + 4]';
+ case TokenID.LOGIC_EQUIVALENT: return 'Эквивалентность [Alt + Shift + 4]';
+ case TokenID.LIT_EMPTYSET: return 'Пустое множество [Alt + X]';
+ case TokenID.LIT_WHOLE_NUMBERS: return 'Целые числа [Alt + Z]';
+ case TokenID.EQUAL: return 'Равенство';
+ case TokenID.NOTEQUAL: return 'Неравенство [Alt + Shift + `]';
+ case TokenID.GREATER_OR_EQ: return 'Больше или равно [Alt + Shift + 7]';
+ case TokenID.LESSER_OR_EQ: return 'Меньше или равно [Alt + Shift + 8]';
+ case TokenID.SET_IN: return 'Быть элементом (принадлежит) [Alt + 1]';
+ case TokenID.SET_NOT_IN: return 'Не принадлежит [Alt + Shift + 1]';
+ case TokenID.SUBSET_OR_EQ: return 'Быть частью (нестрогое подмножество) [Alt + 2]';
+ case TokenID.SUBSET: return 'Строгое подмножество [Alt + 7]';
+ case TokenID.NOT_SUBSET: return 'Не подмножество [Alt + Shift + 2]';
+ case TokenID.SET_INTERSECTION: return 'Пересечение [Alt + A]';
+ case TokenID.SET_UNION: return 'Объединение [Alt + S]';
+ case TokenID.SET_MINUS: return 'Разность множеств [Alt + 5]';
+ case TokenID.SET_SYMMETRIC_MINUS: return 'Симметрическая разность [Alt + Shift + 5]';
+ case TokenID.NT_DECLARATIVE_EXPR: return 'Декларативная форма определения терма [Alt + D]';
+ case TokenID.NT_IMPERATIVE_EXPR: return 'Императивная форма определения терма [Alt + G]';
+ case TokenID.NT_RECURSIVE_FULL: return 'Рекурсивная (цикличная) форма определения терма [Alt + T]';
+ case TokenID.BIGPR: return 'Большая проекция [Alt + Q]';
+ case TokenID.SMALLPR: return 'Малая проекция [Alt + W]';
+ case TokenID.FILTER: return 'Фильтр [Alt + F]';
+ case TokenID.REDUCE: return 'Множество-сумма [Alt + R]';
+ case TokenID.CARD: return 'Мощность [Alt + C]';
+ case TokenID.BOOL: return 'Синглетон [Alt + B]';
+ case TokenID.DEBOOL: return 'Десинглетон [Alt + V]';
+ case TokenID.PUNCTUATION_ASSIGN: return 'Присвоение (императивный синтаксис) [Alt + Shift + 6]';
+ case TokenID.PUNCTUATION_ITERATE: return 'Перебор элементов множества (императивный синтаксис) [Alt + 6]';
}
return `no description: ${id}`;
}
@@ -232,14 +238,14 @@ new Map([
['forceatlas2', 'Граф: Атлас 2D'],
['forceDirected2d', 'Граф: Силы 2D'],
['forceDirected3d', 'Граф: Силы 3D'],
- ['treeTd2d', 'Граф: ДеревоВерт 2D'],
- ['treeTd3d', 'Граф: ДеревоВерт 3D'],
+ ['treeTd2d', 'Граф: ДеревоВер 2D'],
+ ['treeTd3d', 'Граф: ДеревоВер 3D'],
['treeLr2d', 'Граф: ДеревоГор 2D'],
['treeLr3d', 'Граф: ДеревоГор 3D'],
['radialOut2d', 'Граф: Радиальная 2D'],
['radialOut3d', 'Граф: Радиальная 3D'],
['circular2d', 'Граф: Круговая'],
- ['hierarchicalTd', 'Граф: ИерархияВерт'],
+ ['hierarchicalTd', 'Граф: ИерархияВер'],
['hierarchicalLr', 'Граф: ИерархияГор'],
['nooverlap', 'Граф: Без перекрытия']
]);
@@ -430,44 +436,44 @@ export function labelSyntaxTree(node: ISyntaxTreeNode): string {
case TokenID.NT_ENUM_DECL: return 'ENUM_DECLARATION';
case TokenID.NT_TUPLE_DECL: return 'TUPLE_DECLARATION';
- case TokenID.PUNC_DEFINE: return 'DEFINITION';
- case TokenID.PUNC_STRUCT: return 'STRUCTURE_DEFITION';
+ case TokenID.PUNCTUATION_DEFINE: return 'DEFINITION';
+ case TokenID.PUNCTUATION_STRUCT: return 'STRUCTURE_DEFINITION';
case TokenID.NT_ARG_DECL: return 'ARG';
case TokenID.NT_FUNC_CALL: return 'CALL';
case TokenID.NT_ARGUMENTS: return 'ARGS';
case TokenID.NT_FUNC_DEFINITION: return 'FUNCTION_DEFINITION';
- case TokenID.NT_IMP_DECLARE: return 'IDECLARE';
- case TokenID.NT_IMP_ASSIGN: return 'IASSIGN';
- case TokenID.NT_IMP_LOGIC: return 'ICHECK';
+ case TokenID.NT_IMP_DECLARE: return 'DECLARE';
+ case TokenID.NT_IMP_ASSIGN: return 'ASSIGN';
+ case TokenID.NT_IMP_LOGIC: return 'CHECK';
case TokenID.NT_RECURSIVE_SHORT: return labelToken(TokenID.NT_RECURSIVE_FULL);
case TokenID.BOOLEAN:
case TokenID.DECART:
- case TokenID.FORALL:
- case TokenID.EXISTS:
- case TokenID.NOT:
- case TokenID.AND:
- case TokenID.OR:
- case TokenID.IMPLICATION:
- case TokenID.EQUIVALENT:
+ case TokenID.QUANTOR_UNIVERSAL:
+ case TokenID.QUANTOR_EXISTS:
+ case TokenID.LOGIC_NOT:
+ case TokenID.LOGIC_AND:
+ case TokenID.LOGIC_OR:
+ case TokenID.LOGIC_IMPLICATION:
+ case TokenID.LOGIC_EQUIVALENT:
case TokenID.LIT_EMPTYSET:
- case TokenID.LIT_INTSET:
+ case TokenID.LIT_WHOLE_NUMBERS:
case TokenID.EQUAL:
case TokenID.NOTEQUAL:
case TokenID.GREATER_OR_EQ:
case TokenID.LESSER_OR_EQ:
- case TokenID.IN:
- case TokenID.NOTIN:
+ case TokenID.SET_IN:
+ case TokenID.SET_NOT_IN:
case TokenID.SUBSET_OR_EQ:
case TokenID.SUBSET:
- case TokenID.NOTSUBSET:
- case TokenID.INTERSECTION:
- case TokenID.UNION:
+ case TokenID.NOT_SUBSET:
+ case TokenID.SET_INTERSECTION:
+ case TokenID.SET_UNION:
case TokenID.SET_MINUS:
- case TokenID.SYMMINUS:
+ case TokenID.SET_SYMMETRIC_MINUS:
case TokenID.NT_DECLARATIVE_EXPR:
case TokenID.NT_IMPERATIVE_EXPR:
case TokenID.NT_RECURSIVE_FULL:
@@ -475,8 +481,8 @@ export function labelSyntaxTree(node: ISyntaxTreeNode): string {
case TokenID.CARD:
case TokenID.BOOL:
case TokenID.DEBOOL:
- case TokenID.PUNC_ASSIGN:
- case TokenID.PUNC_ITERATE:
+ case TokenID.PUNCTUATION_ASSIGN:
+ case TokenID.PUNCTUATION_ITERATE:
return labelToken(node.typeID);
}
// node
@@ -526,9 +532,9 @@ export function labelGrammeme(gram: GramData): string {
case Grammeme.tran: return 'Переходный: да';
case Grammeme.intr: return 'Переходный: нет';
- case Grammeme.pres: return 'Время: наст';
- case Grammeme.past: return 'Время: прош';
- case Grammeme.futr: return 'Время: буд';
+ case Grammeme.pres: return 'Время: настоящее';
+ case Grammeme.past: return 'Время: прошедшее';
+ case Grammeme.futr: return 'Время: будущее';
case Grammeme.per1: return 'Лицо: 1';
case Grammeme.per2: return 'Лицо: 2';
diff --git a/rsconcept/frontend/src/utils/selectors.ts b/rsconcept/frontend/src/utils/selectors.ts
index adcd7d64..433d7d4f 100644
--- a/rsconcept/frontend/src/utils/selectors.ts
+++ b/rsconcept/frontend/src/utils/selectors.ts
@@ -77,7 +77,7 @@ export const SelectorGrammemesList = [
/**
* Represents options for {@link Grammeme} selector.
*/
-export const SelectorGrammems: IGrammemeOption[] =
+export const SelectorGrammemes: IGrammemeOption[] =
SelectorGrammemesList.map(
gram => ({
value: gram,
@@ -98,7 +98,7 @@ export const SelectorReferenceType = (
/**
* Represents recommended wordforms data.
*/
-export const PremadeWordForms = [
+export const DefaultWordForms = [
{ text: 'ед им', example: 'ручка', grams: [Grammeme.sing, Grammeme.nomn] },
{ text: 'ед род', example: 'ручки', grams: [Grammeme.sing, Grammeme.gent] },
{ text: 'ед дат', example: 'ручке', grams: [Grammeme.sing, Grammeme.datv] },