Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kumir2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
2
Issues
2
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
kumir
kumir2
Commits
40864d8b
Commit
40864d8b
authored
Jan 23, 2013
by
Victor Yacovlev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added error message for "Can't input part of string"
parent
d39ed25d
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
46 additions
and
38 deletions
+46
-38
share/kumir2/kumiranalizer/messages.csv
share/kumir2/kumiranalizer/messages.csv
+38
-37
src/plugins/kumiranalizer/syntaxanalizer.cpp
src/plugins/kumiranalizer/syntaxanalizer.cpp
+4
-1
src/shared/dataformats/ast_expression.cpp
src/shared/dataformats/ast_expression.cpp
+1
-0
src/shared/dataformats/ast_expression.h
src/shared/dataformats/ast_expression.h
+3
-0
No files found.
share/kumir2/kumiranalizer/messages.csv
View file @
40864d8b
...
...
@@ -3,7 +3,8 @@
"No one 'case'";"Нет ни одного “при”";"";"";"";"";
"Broken if statement";"Нет “все” для этой конструкции";"";"";"";"";
"Can't %1 %2 %3";"Нельзя “%1 %2 %3”";"";"";"";"";
"Too many ':=' operators";"Много “:=” в одной строке";"";"";"";"";
"The name is used by other algorithm";"Имя занято другим алгоритмом";"";"";"";"";
"Assignment of non-returning algorithm";"У этого алгоритма нет значения";"";"";"";"";
"Can't input string slice";"Нельзя ввести в вырезку";"";"";"";"";
"Use of 'not' for non-boolean value";"“не” вне логического выражения";"";"";"";"";
"Can't pass in-argument as in/out-argument";"Нельзя арг передать в рез или аргрез";"";"";"";"";
...
...
@@ -13,13 +14,13 @@
"What to output?";"Что выводить?";"";"";"";"";
"Garbage in algorithm";"Лишние строки алгоритма";"";"";"";"";
"Assignment to array";"Присваивание массиву";"";"";"";"";
"
Extra open brace";"
";"";"";"";"";
"
Garbage between if..then";"Мусор между “если”..”то”
";"";"";"";"";
"Program structure error";"Ошибка структуры программы";"";"";"";"";
"No module name";"Нет имени исполнителя";"";"";"";"";
"Too big real value";"Слишком большое вещественное значение";"";"";"";"";
"No pairing 'begin module'";"Нет парной “исп”";"";"";"";"";
"
No such module";"Нет такого испол
нителя";"";"";"";"";
"No
'end' after 'then'";"Нет “все” после “то
”";"";"";"";"";
"
Can't run kumir2-bc to compile this module";"Не могу запустить компилятор для сборки этого испо
нителя";"";"";"";"";
"No
condition after 'if'";"Нет условия для “если
”";"";"";"";"";
"The name is used by global variable";"Имя занято глобальной величиной";"";"";"";"";
"Algorith out of module";"";"";"";"";"";
"Extra variable group specifier: %1";"Лишнее описание группы величин";"";"";"";"";
...
...
@@ -31,11 +32,10 @@
"Can't not %1";"Нельзя не %1";"";"";"";"";
"No pairing ']'";"Нет парной “]”";"";"";"";"";
"Can't integer:=charect";"Нельзя “цел := сим”";"";"";"";"";
"Array dimension mismatch";"Несоответствие размерностей таблиц";"";"";"";"";
"Can't charect:=integer";"Нельзя “сим := цел”";"";"";"";"";
"Can't boolean:=real";"Нельзя “лог := вещ”";"";"";"";"";
"No operator before (";"Пропущен оператор";"";"";"";"";
"T
he name is used by other algorithm";"Имя занято другим алгоритмом
";"";"";"";"";
"T
oo many ':=' operators";"Много “:=” в одной строке
";"";"";"";"";
"Variable already declared";"Величина уже описана";"";"";"";"";
"Can't boolean:=integer";"Нельзя “лог := цел”";"";"";"";"";
"Algorhitms can't return array";"Нельзя вернуть таблицу";"";"";"";"";
...
...
@@ -61,7 +61,7 @@
"Function in array bound";"Нельзя использовать вызов алгоритма в границе";"";"";"";"";
"Indeces was specified before";"Повторное указание индексов";"";"";"";"";
"From-value not specified";"Нет значения после “от”";"";"";"";"";
"
Right array bound is not integer";"Правая граница таблицы не целая
";"";"";"";"";
"
No variables declared after '%1'";"Пусто после “%1”
";"";"";"";"";
"Too many 'not'";"Много “не”";"";"";"";"";
"No pairing ')'";"Нет парной “)”";"";"";"";"";
"Table constant element of variant type";"";"";"";"";"";
...
...
@@ -70,7 +70,7 @@
"Extra 'loop'";"Нет парного “кц”";"";"";"";"";
"Can't %1:=string";"";"";"";"";"";
"Recursive declaration of bound";"Рекурсивное объявление границ";"";"";"";"";
"
Garbage after %1";"Мусор после %1
";"";"";"";"";
"
No operator before [";"Нет величины перед [
";"";"";"";"";
"No step-value";"Нет значения после “шаг”";"";"";"";"";
"Name not declared";"Имя не объявлено";"";"";"";"";
"No paired 'end module'";"Нет парного “кон_исп”";"";"";"";"";
...
...
@@ -80,7 +80,7 @@
"Variable name is empty";"Где имя величины?";"";"";"";"";
"Assignment to in- argument";"Нельзя присвоить аргументу";"";"";"";"";
"No coma before type";"Нет запятой перед объявлением";"";"";"";"";
"
No variables declared after '%1'";"Пусто после “%1”
";"";"";"";"";
"
Right array bound is not integer";"Правая граница таблицы не целая
";"";"";"";"";
"No arguments";"Нет аргументов";"";"";"";"";
"No name before [";"Перед [ должно быть имя";"";"";"";"";
"Extra 'fi'";"Что - “все”?";"";"";"";"";
...
...
@@ -88,7 +88,7 @@
"Can't input algorithm in- argument";"Нельзя ввести в аргумент";"";"";"";"";
"Then-value not specified";"Нет значения после “до”";"";"";"";"";
"Extra 'module'";"Для “исп” нет “кон_исп”";"";"";"";"";
"
No 'loop' before 'times'";"Перед “раз” нет “нц”
";"";"";"";"";
"
Array dimension must not be > 3";"Таблицы не бывают размерности > 3
";"";"";"";"";
"Extra ','";"Лишняя запятая";"";"";"";"";
"Garbage after 'switch' statement";"Мусор после “выбор”";"";"";"";"";
"Can't input constant";"Нельзя ввести в константу";"";"";"";"";
...
...
@@ -98,12 +98,13 @@
"Must be Kumir program file name";"Нет имени файла исполнителя";"";"";"";"";
"Not integer to-value";"Величина не целая";"";"";"";"";
"Input format must be a string";"";"";"";"";"";
"Unpaired ')'";"Непарная скобка";"";"";"";"";
"Must be a file name or empty string";"Должно быть имя файла или пустая строка";"";"";"";"";
"Can't %1:=%2";"Нельзя “%1 := %2”";"";"";"";"";
"No 'begin' after header";"После “алг” нет “нач”";"";"";"";"";
"This algorhitm is broken";"Алгоритм с ошибкой";"";"";"";"";
"No operand before non-unary operator";"";"";"";"";"";
"
Can't run kumir2-bc to compile this module";"Не могу запустить компилятор для сборки этого испо
нителя";"";"";"";"";
"
No such module";"Нет такого испол
нителя";"";"";"";"";
"Extra 'switch'";"Нет ”все” после “выбор”";"";"";"";"";
"Error contains unpaired quote";"Непарная кавычка";"";"";"";"";
"Constant type mismatch";"Несоответствие типа константы";"";"";"";"";
...
...
@@ -117,18 +118,18 @@
"Garbage at the end of statement";"Мусор в конце выражения";"";"";"";"";
"No 'then' after 'if'";"Где “то” после условия?";"";"";"";"";
"Assignment to complex expression";"Нельзя присвоить выражению";"";"";"";"";
"
Can't output value of type %1";"Нельзя вывести значение типа %1
";"";"";"";"";
"
'end' instead of 'endloop'";"“кон” вместо “кц”
";"";"";"";"";
"Can't real:=string";"Нельзя “вещ := лит”";"";"";"";"";
"
Wrong hex constant";"Плохая 16-ричная константа
";"";"";"";"";
"
Constant instead of name";"Здесь должно быть имя
";"";"";"";"";
"':=' or '=' ?";"“:=” или “=” ?";"";"";"";"";
"Unpaired quote";"Непарная кавычка";"";"";"";"";
"Array name not specified before '['";"Перед “[“ должно быть имя таблицы";"";"";"";"";
"No algorithm name";"Не указано имя алгоритма";"";"";"";"";
"
Can't input complex expression";"Нельзя ввести в выражение
";"";"";"";"";
"
Algorhitm not found";"Нет такого алгоритма
";"";"";"";"";
"Not a constant value";"Это не константа";"";"";"";"";
"Can't input function";"Нельзя ввести в алгоритм";"";"";"";"";
"Algorithm out of module";"Алгоритм вне исполнителя";"";"";"";"";
"
No operator before [";"Нет величины перед [
";"";"";"";"";
"
Garbage after %1";"Мусор после %1
";"";"";"";"";
"Can't integer:=boolean";"Нельзя “цел := лог”";"";"";"";"";
"Extra type";"Лишнее объявление типа";"";"";"";"";
"Return value is not indexable";"У знач не может быть индексов";"";"";"";"";
...
...
@@ -136,20 +137,19 @@
"Extra docstring";"Здесь не должно быть строк описания";"";"";"";"";
"Extra brackets for algorithm without arguments";"Нет аргументов – не нужны скобки";"";"";"";"";
"Assignment to function";"Нельзя присвоить алгоритму";"";"";"";"";
"
Constant instead of name";"Здесь должно быть имя
";"";"";"";"";
"
Unmatched array dimensions";"Несоответствие размерностей таблиц
";"";"";"";"";
"
Wrong hex constant";"Плохая 16-ричная константа
";"";"";"";"";
"
Index is not integer";"Индекс – не целое число
";"";"";"";"";
"Operator in name";"Имя содержит оператор";"";"";"";"";
"Times value not specified";"Сколько раз?";"";"";"";"";
"Table dimension > 3";"";"";"";"";"";
"Garbage afrer module name";"Мусор после имени исполнителя";"";"";"";"";
"No for-loop variable";"Нет величины цикла";"";"";"";"";
"Left array bound is not integer";"Левая граница – не целое";"";"";"";"";
"No condition after 'case'";"Нет условия после “при”";"";"";"";"";
"Incompatible types";"Плохой тип параметра";"";"";"";"";
"
'end_module' instead of 'end'";"“кон_исп” вместо “кон”
";"";"";"";"";
"
Array dimension mismatch";"Несоответствие размерностей таблиц
";"";"";"";"";
"Initial value is empty";"Начальное значение не задано";"";"";"";"";
"'%1' in algorithm";"“%1” внутри алгоритма";"";"";"";"";
"Extra statement";"Строка не на месте";"";"";"";"";
"
Garbage between if..then";"Мусор между “если”..”то”
";"";"";"";"";
"
Extra open brace";"
";"";"";"";"";
"No such file";"Нет такого исполнителя рядом с программой";"";"";"";"";
"No loop 'to' value";"Нет “до” после “от”";"";"";"";"";
"Extra format";"";"";"";"";"";
...
...
@@ -157,16 +157,16 @@
"Extra '['";"Лишняя “[“";"";"";"";"";
"Constant can not be a name";"Константа – это не имя";"";"";"";"";
"It is a garbage";"Это лишнее";"";"";"";"";
"
Not integer for-loop variable";"Величина не целая
";"";"";"";"";
"No
condition after 'if'";"Нет условия для “если
”";"";"";"";"";
"
Extra format parameter";"Лишний параметр вывода
";"";"";"";"";
"No
'end' after 'then'";"Нет “все” после “то
”";"";"";"";"";
"Slice of string array, but not string";"Вырезка не из строки, а из таблицы";"";"";"";"";
"Void argument";"Пустой аргумент";"";"";"";"";
"What to input?";"Куда вводить?";"";"";"";"";
"
Algorhitm not found";"Нет такого алгоритма
";"";"";"";"";
"
Can't input complex expression";"Нельзя ввести в выражение
";"";"";"";"";
"Left array bound not specified";"Не указана левая граница таблицы";"";"";"";"";
"Array input must not be in a list";"";"";"";"";"";
"
Index is not integer";"Индекс – не целое число
";"";"";"";"";
"
Unpaired ')'";"Непарная скобка
";"";"";"";"";
"
Unmatched array dimensions";"Несоответствие размерностей таблиц
";"";"";"";"";
"
Table dimension > 3";"
";"";"";"";"";
"Extra variable group out-specifier";"Лишний “рез”";"";"";"";"";
"No 'loop' before 'while'";"Перед “пока” нет “нц”";"";"";"";"";
"Extra 'case'";"“при” не на месте";"";"";"";"";
...
...
@@ -184,17 +184,18 @@
"Extra 'begin'";"Нет “кон” после “нач”";"";"";"";"";
"Unpaired }";"Непарная }";"";"";"";"";
"Extra variable group inout-specifier";"Лишний “аргрез”";"";"";"";"";
"Can't -%1";"Нельзя -%1";"";"";"";"";
"Unpaired {";"Непарная {";"";"";"";"";
"Extra indeces in slice";"Лишние индексы в вырезке";"";"";"";"";
"Can't integer:=%1";"";"";"";"";"";
"
Unpaired '['";"Не парная “[
“";"";"";"";"";
"
No pairing '('";"Нет парной “(
“";"";"";"";"";
"Can't pass this expression as in/out-argumeny";"Не величина в аргрез-параметре";"";"";"";"";
"Unpaired ]";"Непарная ]";"";"";"";"";
"Must be a scalar constant";"";"";"";"";"";
"What to input from file?";"Куда вводить из файла?";"";"";"";"";
"Unpaired [";"Непарная [";"";"";"";"";
"Extra )";"Лишняя )";"";"";"";"";
"
Wrong E-real number";"Ошибка в E-записи числа
";"";"";"";"";
"
'end_module' instead of 'end'";"“кон_исп” вместо “кон”
";"";"";"";"";
"Extra 'end'";"Лишний “кон”";"";"";"";"";
"Right array bound is empty";"Нет правой границы таблицы";"";"";"";"";
"Unpaired (";"Непарная (";"";"";"";"";
...
...
@@ -205,28 +206,29 @@
"Not enought algorithm arguments";"Мало аргументов";"";"";"";"";
"Can't charect:=boolean";"Нельзя “сим := лог”";"";"";"";"";
"Algorhitm header in algorhitm body";"Вложенное описание алгоритма";"";"";"";"";
"
Array dimension must not be > 3";"Таблицы не бывают размерности > 3
";"";"";"";"";
"
No 'loop' before 'for'";"Перед “для” нет “нц”
";"";"";"";"";
"
No 'loop' before 'times'";"Перед “раз” нет “нц”
";"";"";"";"";
"
Wrong E-real number";"Ошибка в E-записи числа
";"";"";"";"";
"Extra 'if'";"Нет “то..все” после “если”";"";"";"";"";
"Can't %1:=real";"";"";"";"";"";
"No condition between 'case' and colon";"Нет условия между “при” и “:”";"";"";"";"";
"No then before else";"Нет “то” перед “иначе”";"";"";"";"";
"Assignment of array";"Нельзя присваивать таблицы";"";"";"";"";
"Extra 'not'";"Лишнее “не”";"";"";"";"";
"
'end' instead of 'endloop'";"“кон” вместо “кц”
";"";"";"";"";
"
Can't output value of type %1";"Нельзя вывести значение типа %1
";"";"";"";"";
"Keyword in name";"Ключевое слово в имени";"";"";"";"";
"Can't input an array";"";"";"";"";"";
"What to output to file?";"Что выводить в файл?";"";"";"";"";
"No 'case' after 'switch'";"Нет “при:” после “выбор”";"";"";"";"";
"Can't %1:=charect";"";"";"";"";"";
"= instead of :=";"";"";"";"";"";
"
Garbage afrer module name";"Мусор после имени исполнителя
";"";"";"";"";
"
Times value not specified";"Сколько раз?
";"";"";"";"";
"Array element in array bound";"Элемент таблицы в границе";"";"";"";"";
"Can't string:=%1";"";"";"";"";"";
"First unnamed algorithm should not return anything";"Алгоритм без имени ничего не возвращает";"";"";"";"";
"
Extra format parameter";"Лишний параметр вывода
";"";"";"";"";
"
Not integer for-loop variable";"Величина не целая
";"";"";"";"";
"No left array bound";"Нет левой границы таблицы";"";"";"";"";
"Integer constant too big";"Слишком большое целое число";"";"";"";"";
"Can't input part of string";"Нельзя ввести часть строки";"";"";"";"";
"Literal can't be part of name";"Константа в имени";"";"";"";"";
"Access to return value outside of algorithm";"Вне алгоритмов не бывает “знач”";"";"";"";"";
"Can't boolean:=charect";"Нельзя “лог := сим”";"";"";"";"";
...
...
@@ -235,12 +237,11 @@
"Can't string:=real";"Нельзя “лит := вещ”";"";"";"";"";
"No 'from'..'to'.. after variable";"Нет “от”..”до”.. после величины";"";"";"";"";
"Forgotten operator after bracket";"Перед выражением пропущен оператор";"";"";"";"";
"
Can't -%1";"Нельзя -%1
";"";"";"";"";
"
No 'loop' before 'for'";"Перед “для” нет “нц”
";"";"";"";"";
"Can't pass in-argument as out-argument";"Нельзя арг передать в рез или аргрез";"";"";"";"";
"Condition after '%1' not boolean";"Условие после “%1” не логическое";"";"";"";"";
"Can't integer:=real";"Нельзя “цел := вещ”";"";"";"";"";
"Array required here";"Индексы не нужны";"";"";"";"";
"Garbage between alg..begin";"Мусор между “алг”..”нач”";"";"";"";"";
"No condition after 'end if'";"Нет условия для “кц при”";"";"";"";"";
"Assignment of void";"Нельзя присвоить пустое значение";"";"";"";"";
"Loop type not specified";"Не указан тип цикла";"";"";"";"";
...
...
@@ -292,8 +293,8 @@
"Extra ]";"Лишняя ]";"";"";"";"";
"No expressions after '%1'";"Нет величин после “%1”";"";"";"";"";
"Not integer times-value";"Величина не целая";"";"";"";"";
"
No pairing '('";"Нет парной “(
“";"";"";"";"";
"
Assignment of non-returning algorithm";"У этого алгоритма нет значения
";"";"";"";"";
"
Unpaired '['";"Не парная “[
“";"";"";"";"";
"
Garbage between alg..begin";"Мусор между “алг”..”нач”
";"";"";"";"";
"Bad symbol in name";"Имя содержит недопустимый символ";"";"";"";"";
"What to assign?";"Что назначать?";"";"";"";"";
"No condition after 'loop while'";"Нет условия после “нц пока”";"";"";"";"";
...
...
src/plugins/kumiranalizer/syntaxanalizer.cpp
View file @
40864d8b
...
...
@@ -910,7 +910,8 @@ void SyntaxAnalizerPrivate::parseInput(int str)
err
=
_
(
"Can't input subexpression"
);
if
(
expr
->
dimension
>
0
)
err
=
_
(
"Can't input an array"
);
if
(
expr
->
isStringPart
)
err
=
_
(
"Can't input part of string"
);
if
(
err
.
length
()
>
0
)
{
foreach
(
Lexem
*
lx
,
groups
[
i
])
...
...
@@ -4100,10 +4101,12 @@ AST::Expression * SyntaxAnalizerPrivate::parseElementAccess(const QList<Lexem *>
if
(
realArguments
.
size
()
>
arguments
.
size
())
{
// String slice -> res type is string
result
->
baseType
.
kind
=
AST
::
TypeString
;
result
->
isStringPart
=
true
;
}
else
{
// String element -> res type is character
result
->
baseType
.
kind
=
AST
::
TypeCharect
;
result
->
isStringPart
=
true
;
}
}
else
{
...
...
src/shared/dataformats/ast_expression.cpp
View file @
40864d8b
...
...
@@ -12,6 +12,7 @@ Expression::Expression()
variable
=
NULL
;
function
=
NULL
;
expressionIsClosed
=
false
;
isStringPart
=
false
;
constant
=
QVariant
::
Invalid
;
operatorr
=
AST
::
OpNone
;
dimension
=
0
;
...
...
src/shared/dataformats/ast_expression.h
View file @
40864d8b
...
...
@@ -96,6 +96,9 @@ struct ABSTRACTSYNTAXTREE_EXPORT Expression {
* This flag is used to avoid CNF-transofmations */
bool
expressionIsClosed
;
/** True if string element or slice */
bool
isStringPart
;
/** Operator in case of kind==StSubexpression, emty otherwise */
enum
ExpressionOperator
operatorr
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment