Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
4 / 4 / 6
Регистрация: 08.04.2018
Сообщений: 128

Простейший синтаксис скриптового языка

01.03.2020, 22:42. Показов 1469. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Для личных нужд (или просто для развития, ещё не определился) нужно сделать простой скриптовой язык, главное, не вида BASIC.

Не по теме:


Пожалуйста, не спрашивайте, зачем.


Мне просто нужно понять, как правильно получить параметры из метода вида Method(arg1, arg2) и обработать, а дальше я сам буду с бубном танцевать.
Пример синтаксиса языка:
Кликните здесь для просмотра всего текста

GSApplication # Название (title) приложения

MainEnter # Главный вход
WriteLine("Writeline String");
Write(1 + 2);


Мне просто нужно узнать, как правильно вытянуть параметры из функций. Буду рад любой строчке кода.
Ах да, забыл упомянуть, что я собираюсь реализовать компилятор (переводить код в C#). Это я знаю как сделать. По-этому ещё один вопрос: как можно реализовать метод? К примеру такого синтаксиса:
Кликните здесь для просмотра всего текста

# Типы: noresult - без возвращаемого значения, string, int, float
func [noresult] Name(arg1, arg2, argN...) => {
...
}


Если знаете какие-нибудь книги по этой теме - тоже будет не плохо.

ЕЩЁ РАЗ ПОВТОРЮ - мне не нужны высокоуровневые конструкции, мне нужен простой интерпритатор (для начала).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.03.2020, 22:42
Ответы с готовыми решениями:

Создание скриптового языка
Здравствуйте! Я уже давно хотел написать свой так сказать скриптовый движок, в образовательных целях и возможно для дальнейшего...

синтаксис языка C#
Здравствуйте уважаемые форумчане. Подскажите мне пожалуйста по синтаксису. Читаю книгу Шилдта C# 4.0 и в главе Обобщения непонятен стал...

Выбор скриптового языка
Здравствуйте! Проблема такая. В программу нужно встроить скриптовый язык, при это программа предоставляет некий набор функций, которые...

5
sleep
 Аватар для I can
4926 / 4576 / 840
Регистрация: 13.04.2015
Сообщений: 9,727
01.03.2020, 22:46
Цитата Сообщение от Cyber_User_321 Посмотреть сообщение
не вида BASIC.
А что с BASIC-ом не так ?
0
4 / 4 / 6
Регистрация: 08.04.2018
Сообщений: 128
01.03.2020, 23:10  [ТС]
I can,
1. Сама структура BASIC не очень понятная
2. Выглядит непривычно (хотя и немного лампово,)
3. Я с видом BASIC уже делал "Скриптовый" язык
1
4 / 4 / 6
Регистрация: 08.04.2018
Сообщений: 128
02.03.2020, 15:15  [ТС]
Вроде бы нашёл способ, как спарсить параметры и определить их тип...
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Заканчивается на ;
                    if (code.EndsWith(";"))
                    {
 
                        int paramsStart = code.IndexOf('(');
                        int paramsEnd = code.IndexOf(')');
                        string functionArgs = code.Substring(paramsStart + 1, paramsEnd - paramsStart - 1);
                        string[] args = functionArgs.Split(',');
                        string functionName = code.Substring(0, paramsStart);
                        functionName.Replace(" ", "");
                        Parameter[] parsedParameters = new Parameter[args.Length];
 
                        for (int i = 0; i < parsedParameters.Length; i++)
                        {
                            parsedParameters[i] = new Parameter(args[0]);
                        }
class Parameter
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public class Parameter
    {
        public string type;
        public string value;
 
        public Parameter(string value)
        {
            if (value.Trim().StartsWith("\"") && value.Trim().EndsWith("\""))
            {
                type = "string";
                this.value = value.Trim().Substring(1, value.Length - 2);
            } 
            else if (value.Trim().StartsWith("\'") && value.Trim().EndsWith("\'") && value.Trim().Length == 3)
            {
                this.type = "char";
                this.value = value.Trim()[1].ToString();
            }
            else
            {
                bool isNumber = true;
                foreach (char val in value)
                {
                    if (!(val == '0') || !(val == '1') || !(val == '2') || !(val == '3') || !(val == '4') ||
                        !(val == '5') || !(val == '6') || !(val == '7') || !(val == '8') || !(val == '9')) isNumber = false;
                }
                if (isNumber)
                {
                    type = "int";
                    this.value = value;
                } else
                {
                    type = "variable";
                    this.value = "variableValue";
                }
            }
        }
    }
Да-да, немного говнокода.

НО! Есть проблема.
Кликните здесь для просмотра всего текста

WriteLine("Привет!"); # всё нормально
WriteLine("Привет, мир"); # будет ошибка, так как есть разделительный знак внутри параметра с типом string

Параметры разделяются по знаку ,
Если такая будет внутри string, то программа подумает, что это 2 разных параметры и следовательно выдаст ошибку.
Нужно каким-нибудь способом проигнорировать , в строке. Была идея с заменой запятой на %c, но это не всегда удобно. Вообщем, если вы знаете, как можно это исправить - напишите.
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
02.03.2020, 15:27
Cyber_User_321, На регулярные выражения принципиально не хотите смотреть? ..
RegEx: Grabbing values between quotation marks
... но не навязываю, а просто как вариант ...
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
02.03.2020, 16:01
Цитата Сообщение от Cyber_User_321 Посмотреть сообщение
Мне просто нужно понять, как правильно получить параметры из метода вида Method(arg1, arg2) и обработать
Надо, наверное, начать с описания грамматики языка, а не с создания парсера?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.03.2020, 16:01
Помогаю со студенческими работами здесь

Использование C++ в качестве скриптового языка
Всем привет. Сейчас пишу игровой движок, нужен скриптовый язык для него. На ум сразу приходит Lua, однако не страдает ли от этого...

Вычисление файла с помощью скриптового языка cmd
Вычислить файлы, которые связаны с assoc. Их тип связана с txt. Имя файла, дату создания файла.

Найти бесплатную программу для построения блок-схем из кода скриптового языка PHP
Помогите найти в интернете безоплатную программу которая может генерировать блок схемы из исходного кода скриптового языка PHP. Короче я...

Синтаксис языка 1С
Добрый день! где можно почитать про синтаксис 1С? Например если взять учбник по ПХП, то там описывают что можно создать допустим цикл так...

Синтаксис языка 1с
Добрый вечер, недавно начал изучать 1с. Хотелось бы спросить. Есть ли у кого нибудь какой нибудь, файл где были бы изложены основы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru