Comments (3)
我完全高兴地这析,谢谢你的贡献。
from kumir2.
Thanks, here is a more precise program showing this bug:
алг маин
нач
цел кт = -1
лит выр = "3"
получи терминал("3", 1, кт)
вывод кт
кон
алг получи терминал(лит выражение, цел позиция, рез цел код токена)
нач
цел длина_выражения
длина_выражения := длин(выражение)
если позиция > длина_выражения
то
код токена := 8
иначе
выбор
при выражение[позиция] = '+': код токена := 1
при выражение[позиция] = '-': код токена := 2
при выражение[позиция] = '*': код токена := 3
при выражение[позиция] = '/': код токена := 4
при выражение[позиция] = '(': код токена := 5
при выражение[позиция] = ')': код токена := 6
при выражение[позиция] = '1': код токена := 7
иначе стоп
всё
всё
кон
If we pass the argument not as a literal constant, but as a variable выр containg 1-char value, it works. Even if we pass the argument implicitly, via Kumir feature to read input arguments of the main algorithm from keyboard, it still works.
I guess, this strange magic of passing 1-char literal value as сим instead of лит may be due to the ancient ideas that we should "help" people make less bugs, allowing them to place symbols in double quotes like "3" instead of the correct expression '3'.
There may be two ways to fix this bug:
- (better) to disallow such a strange behaviour of explicit literals. But it can break a lot of incorrect user programs.
- extend длин function to сим arguments.
I can guess that I broke this code when I was optimizing the strings behaviour. That optimization is still on its way, so we will possibly have to address this issue many times.
from kumir2.
Я поменял код примерно таким образом:
алг считай (лит выражение2, рез вещ р)
нач
лит выражение
выражение := выражение2 + ""
однако калькулятор не заработал.
На этот раз
>> 19:20:11 - калькулятор.kum - Начало выполнения
ОШИБКА ВЫПОЛНЕНИЯ: Выход за границу таблицы
>> 19:20:11 - калькулятор.kum - Выполнение завершено 0.402
В коде калькулятора нет гиперссылки на статью, в которой описано, как составлялись таблицы,
поэтому проверить их невозможно (кажется, что проще написать новые).
from kumir2.
Related Issues (20)
- Logging HOT 1
- Simplify Linux deployment HOT 1
- Компиляция под MacOS HOT 1
- It seems that task Циклы пока, Задача 3 from practicum.kurs.xml is impossible HOT 2
- The system crashes when you try to type a number after stopping the execution
- Building with Qt 5.15.2 fails due to missing #include <QPainterPath> in src/plugins/editor/editorplane.cpp HOT 2
- Cannot create a QWidget without QApplication HOT 3
- Indentation is missing in *.kum files HOT 2
- Decoupling KuMir IDE from language itself HOT 5
- неплохо бы написать, что заготовки для исполнителей генерируются питоном 3 HOT 1
- Не работает ввод латиницы с Alt из русской раскладки HOT 4
- Unable to get or modificate fields of types HOT 1
- не получается вводить данные из файла. HOT 1
- Assign constants in actor
- Add double buffering for Painter HOT 1
- Сборка deb-пакетов для Debian/Ubuntu HOT 1
- SIGSEGV под Wayland HOT 2
- GCC 13 not works
- Помогите в работе с файлами
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kumir2.