Вниз  Реализация "собственного" яп
- 6.06.2016 / 15:42
Helltar
  Пользователь

Helltar 
Сейчас: Offline
Морально.

Неплохо, продолжай.
- 6.06.2016 / 17:30
MoteX
  Пользователь

MoteX 
Сейчас: Offline
Просто банальным тестом. Я по этому поводу написал документацию как по идее должно работать.
Просто к примеру annimon действительно помог найти ошибки. Это ж и есть цель публикации:)
- 6.06.2016 / 18:15
DominaN
  Пользователь

DominaN 
Сейчас: Offline
можно кроме принт добавить concat, вот моя реализация:
  1. private static final StringBuilder sb = new StringBuilder(64);
  2.  
  3. public static String concat(String... strings) {
  4.     sb.delete(0, sb.length());
  5.  
  6.     for (String s : strings) sb.append(s);
  7.  
  8.     return sb.toString();
  9. }
  10.  
  11. public static String concat(Object... strings) {
  12.     sb.delete(0, sb.length());
  13.  
  14.     for (Object s : strings) sb.append(String.valueOf(s));
  15.  
  16.     return sb.toString();
  17. }

- 6.06.2016 / 18:16
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
MoteX, aRiGaTo отчасти прав, тебе бы помогли гораздо лучше, если б ты рассказал, как у тебя реализовано. Велосипеды велосипедами, а на начальном этапе мудрый совет от знающего человека поможет избежать дальнейших проблем.

DominaN, конкатенация вроде есть. print("hello " & text)

MoteX, c нетерпением жду if и возможности получить символ из строки (ну и всякие indexOf, length, substring тоже приветствуются).
__________________
 let live

Изменено aNNiMON (6.06 / 18:20) (всего 2 раза)
- 6.06.2016 / 18:20
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Насчет кавычек - вангую та же проблема, когда я делал подсветку синтаксиса с помощью регэкспов. Строка бьется посередине лишней кавычкой и лексема херится. Там я так и не починил, но вообще рекомендую все строки перед исполнением парсить в массив final String[] и обращаться к ним по индексу. Ну а при парсинге строк проверять, не стоит ли перед кавычкой \ и если стоит то игнорировать это как конец литерала
- 6.06.2016 / 18:23
DominaN
  Пользователь

DominaN 
Сейчас: Offline
aNNiMON, а split string? :squint:
  1. public static String[] splitString(String str, String separator) {
  2.     final ArrayList<String> strings = new ArrayList<>();
  3.  
  4.     int start = 0, end, skip = separator.length();
  5.  
  6.     str = concat(str, separator);
  7.  
  8.     while (start < str.length()) {
  9.         end = str.indexOf(separator, start);
  10.         strings.add(str.substring(start, end));
  11.         start = end + skip;
  12.     }
  13.  
  14.     return strings.toArray(new String[strings.size()]);
  15. }

- 6.06.2016 / 18:23
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Парсить регулярками что-то сложнее калькулятора, простите, зашквар.
И М Х О
__________________
 let live
- 6.06.2016 / 18:25
DominaN
  Пользователь

DominaN 
Сейчас: Offline
- 6.06.2016 / 18:51
aRiGaTo
  Пользователь

aRiGaTo 
Сейчас: Offline
DominaN, у регулярок есть одна проблема - они регулярные. Конечно, расширенные RE уже классом повыше и, вполне возможно, ими можно разобрать контекстно-свободные языки. А вот остальные под вопросом. Но, даже если и можно, такое выражение превратится в монстра. Чего можно избежать, используя более подходящий инструмент. Грамматики, конечно же.
__________________
 don't tread on me

Изменено aRiGaTo (6.06 / 18:56) (всего 2 раза)
- 8.06.2016 / 05:51
MoteX
  Пользователь

MoteX 
Сейчас: Offline
Многие вещи я уже реализовал. В том числе и условия. К сожалению идею придется пока убрать в долгий ящик. Есть другие проекты, требующие внимания. Всем спасибо :)
Иногда может и буду попиливать, но это врядли
Наверх  Всего сообщений: 183
Фильтровать сообщения
Поиск по теме
Файлы топика (3)