Commit 4efd11bc authored by Victor Yacovlev's avatar Victor Yacovlev

Fixed 'no coma before var decl'

NOTE: This bug was ported from Kumir 1.x code!
parent ff0af050
......@@ -3,23 +3,24 @@
"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";"“не” вне логического выражения";"";"";"";"";
"Extra statement";"Строка не на месте";"";"";"";"";
"Can't pass in-argument as in/out-argument";"Нельзя арг передать в рез или аргрез";"";"";"";"";
"Wrong table constant";"";"";"";"";"";
"Unpaired ']'";"Нет парной “]”";"";"";"";"";
"Return valus is not a string";"Возвращаемая величина не строка";"";"";"";"";
"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";"Лишнее описание группы величин";"";"";"";"";
......@@ -27,19 +28,20 @@
"Nothing between '(' and ')'";"Пусто между “(“ и “)”";"";"";"";"";
"No operands";"Только операция";"";"";"";"";
"File handle is not integer";"Ключ – не целое число";"";"";"";"";
"No colon after condition";"В конце нет “:”";"";"";"";"";
"Wrong E-real number";"Ошибка в E-записи числа";"";"";"";"";
"Can't not %1";"Нельзя не %1";"";"";"";"";
"No pairing ']'";"Нет парной “]”";"";"";"";"";
"Can't integer:=charect";"Нельзя “цел := сим”";"";"";"";"";
"Can't charect:=integer";"Нельзя “сим := цел”";"";"";"";"";
"Can't boolean:=real";"Нельзя “лог := вещ”";"";"";"";"";
"The name is used by other algorithm";"Имя занято другим алгоритмом";"";"";"";"";
"Too many ':=' operators";"Много “:=” в одной строке";"";"";"";"";
"Variable already declared";"Величина уже описана";"";"";"";"";
"Can't boolean:=integer";"Нельзя “лог := цел”";"";"";"";"";
"Algorhitms can't return array";"Нельзя вернуть таблицу";"";"";"";"";
"'to' earler then 'from'";"“до” раньше чем “от”";"";"";"";"";
"Error compiling this module";"Ошибка сборки этого исполнителя";"";"";"";"";
"Extra operator";"Лишний оператор";"";"";"";"";
"No coma before declaration";"Нет запятой перед объявлением";"";"";"";"";
"Can't input value of type %1";"Нельзя ввести значение типа %1";"";"";"";"";
"File already specified";"";"";"";"";"";
"Can't boolean:=%1";"";"";"";"";"";
......@@ -57,7 +59,7 @@
"Function in array bound";"Нельзя использовать вызов алгоритма в границе";"";"";"";"";
"Indeces was specified before";"Повторное указание индексов";"";"";"";"";
"From-value not specified";"Нет значения после “от”";"";"";"";"";
"No variables declared after '%1'";"Пусто после “%1”";"";"";"";"";
"Right array bound is not integer";"Правая граница таблицы не целая";"";"";"";"";
"Too many 'not'";"Много “не”";"";"";"";"";
"No pairing ')'";"Нет парной “)”";"";"";"";"";
"Table constant element of variant type";"";"";"";"";"";
......@@ -76,14 +78,14 @@
"Variable name is empty";"Где имя величины?";"";"";"";"";
"Assignment to in- argument";"Нельзя присвоить аргументу";"";"";"";"";
"No coma before type";"Нет запятой перед объявлением";"";"";"";"";
"Right array bound is not integer";"Правая граница таблицы не целая";"";"";"";"";
"No variables declared after '%1'";"Пусто после “%1”";"";"";"";"";
"No arguments";"Нет аргументов";"";"";"";"";
"Extra 'fi'";"Что - “все”?";"";"";"";"";
"Type not declared before";"Не указан тип";"";"";"";"";
"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,7 +100,7 @@
"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";"Несоответствие типа константы";"";"";"";"";
......@@ -112,14 +114,14 @@
"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";"Алгоритм вне исполнителя";"";"";"";"";
......@@ -129,10 +131,10 @@
"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";"Сколько раз?";"";"";"";"";
"Garbage afrer module name";"Мусор после имени исполнителя";"";"";"";"";
"Table dimension > 3";"";"";"";"";"";
"No for-loop variable";"Нет величины цикла";"";"";"";"";
"Left array bound is not integer";"Левая граница – не целое";"";"";"";"";
......@@ -141,8 +143,8 @@
"Array dimension mismatch";"Несоответствие размерностей таблиц";"";"";"";"";
"Initial value is empty";"Начальное значение не задано";"";"";"";"";
"'%1' in algorithm";"“%1” внутри алгоритма";"";"";"";"";
"Can't pass in-argument as in/out-argument";"Нельзя арг передать в рез или аргрез";"";"";"";"";
"Garbage between if..then";"Мусор между “если”..”то”";"";"";"";"";
"Extra statement";"Строка не на месте";"";"";"";"";
"Extra open brace";"";"";"";"";"";
"No such file";"Нет такого исполнителя рядом с программой";"";"";"";"";
"No loop 'to' value";"Нет “до” после “от”";"";"";"";"";
"Extra format";"";"";"";"";"";
......@@ -150,15 +152,15 @@
"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";"Индекс – не целое число";"";"";"";"";
"Unmatched array dimensions";"Несоответствие размерностей таблиц";"";"";"";"";
"Unpaired ')'";"Непарная скобка";"";"";"";"";
"Extra variable group out-specifier";"Лишний “рез”";"";"";"";"";
"No 'loop' before 'while'";"Перед “пока” нет “нц”";"";"";"";"";
......@@ -176,14 +178,13 @@
"Extra 'else'";"Лишнее “иначе”";"";"";"";"";
"Extra 'begin'";"Нет “кон” после “нач”";"";"";"";"";
"Extra variable group inout-specifier";"Лишний “аргрез”";"";"";"";"";
"Can't -%1";"Нельзя -%1";"";"";"";"";
"Extra indeces in slice";"Лишние индексы в вырезке";"";"";"";"";
"Can't integer:=%1";"";"";"";"";"";
"Unpaired '['";"Не парная “[“";"";"";"";"";
"No pairing '('";"Нет парной “(“";"";"";"";"";
"Can't pass this expression as in/out-argumeny";"Не величина в аргрез-параметре";"";"";"";"";
"Must be a scalar constant";"";"";"";"";"";
"What to input from file?";"Куда вводить из файла?";"";"";"";"";
"'end_module' instead of 'end'";"“кон_исп” вместо “кон”";"";"";"";"";
"No colon after condition";"В конце нет “:”";"";"";"";"";
"Extra 'end'";"Лишний “кон”";"";"";"";"";
"Algorhitm header in algorhitm body";"Вложенное описание алгоритма";"";"";"";"";
"Not a simple index";"Индекс – не число";"";"";"";"";
......@@ -191,26 +192,26 @@
"Name contains quotation symbol";"Имя содержит кавычку";"";"";"";"";
"Not enought algorithm arguments";"Мало аргументов";"";"";"";"";
"Can't charect:=boolean";"Нельзя “сим := лог”";"";"";"";"";
"Array dimension must not be > 3";"Таблицы не бывают размерности > 3";"";"";"";"";
"Wrong E-real number";"Ошибка в E-записи числа";"";"";"";"";
"No 'loop' before 'times'";"Перед “раз” нет “нц”";"";"";"";"";
"No 'loop' before 'for'";"Перед “для” нет “нц”";"";"";"";"";
"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";"Слишком большое целое число";"";"";"";"";
"Literal can't be part of name";"Константа в имени";"";"";"";"";
......@@ -221,12 +222,11 @@
"Can't string:=real";"Нельзя “лит := вещ”";"";"";"";"";
"No 'from'..'to'.. after variable";"Нет “от”..”до”.. после величины";"";"";"";"";
"Forgotten operator after bracket";"Перед выражением пропущен оператор";"";"";"";"";
"No 'loop' before 'for'";"Перед “для” нет “нц”";"";"";"";"";
"Can't -%1";"Нельзя -%1";"";"";"";"";
"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";"Не указан тип цикла";"";"";"";"";
......@@ -245,6 +245,7 @@
"Can't open module file";"Не могу открыть файл исполнителя";"";"";"";"";
"Algorhitm not implemented";"Алгоритм не реализован";"";"";"";"";
"Can't string:=boolean";"Нельзя “лит := лог”";"";"";"";"";
"'end_module' instead of 'end'";"“кон_исп” вместо “кон”";"";"";"";"";
"No 'from' before 'to'";"Нет “от”.. перед “до”";"";"";"";"";
"Name starts with digit";"Имя не может начинаться с цифры";"";"";"";"";
"Extra indeces";"Лишние индексы";"";"";"";"";
......@@ -276,8 +277,8 @@
"Garbage between switch..case";"Мусор между “выбор”..”при”";"";"";"";"";
"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'";"Нет условия после “нц пока”";"";"";"";"";
......
......@@ -1920,7 +1920,6 @@ QList<AST::Variable*> SyntaxAnalizerPrivate::parseVariables(int statementIndex,
for ( int curPos=0; curPos<group.lexems.size(); curPos++ )
{
// Предполагается, что модификатор группы уже задан, поэтому
// если встречается арг, рез или аргрез, то это ошибка
if (group.lexems[curPos]->type==LxSecIn) {
......@@ -1937,6 +1936,17 @@ QList<AST::Variable*> SyntaxAnalizerPrivate::parseVariables(int statementIndex,
}
else if ( ( par == type ) || ( par == tn ) )
{
// Check if no coma before not first declaration
if ( curPos>0
&& group.lexems[curPos]->type!=LxOperComa
&& group.lexems[curPos-1]->type!=LxOperComa
&& group.lexems[curPos-1]->type!=LxOperSemicolon
)
{
group.lexems[curPos]->error = _("No coma before declaration");
return result;
}
// Pазбираемся с типом переменных
if (group.lexems[curPos]->type==LxNameClass) {
AST::VariableBaseType bt = lexer->baseTypeByClassName(group.lexems[curPos]->data);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment