Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
#include <default.inc>
var a:float=0.0;
var b:float=0.0;
var c:float=0.0;
var d:float=0.0;
var x1:float=0.0;
var x2:float=0.0;
::no
write 'Enter A: ';
in a;
write 'Enter B: ';
in b;
write 'Enter C: ';
in c;
write '$a*x^2+$b*x+c=0 [y/n]: ';
var s:string='';
string readline(s);
if eq(s, 'y') yes : no;
::yes
math d='b*b-4*a*c';
if eq(d, 0) dzero : dnzero;
if low(d, 0) dex;
::dzero
math x1='(-b)/(2*a)';
writeln 'X = $x1';
jump exit;
::dnzero
math x1='(-b+Math.sqrt(d))/(2*a)';
math x2='(-b-Math.sqrt(d))/(2*a)';
write 'X1 = $x1 X2 = $x2';
jump exit;
::dex
write 'Don`t exist!';
::exit
write 'Repeat? [y/n]';
string readline(s);
if eq(s, 'y') no;
write 'Bye!';
call readkey;
Программа развязывания квадратных уравнений на самодельном ЯП =)
Да, это не совсем ГК, но тем не менее смешно.
ЗЫ. В "default.inc" находятся ф-ции "write" и "readkey".
Если уж сам язык делал, то мог бы сделать нормальные операторы присваивания и сравнения. А не так, что оператор, выглядящий, как оператор сравнения, на самом деле присваивает, а сравнивающий выглдит в виде двух равенств (это вообще кто такое извращение придумал...).
Делал я яп когда даже не подозревал про существование yacc, конечных автоматов и прочей компиляторостроительной фигни. И весь парсинг программы делается при помощи регулярных выражений =)
Да это нормально, у меня парсер тоже состоит из огромного числа else if.
Правда, это только при считывании, там все строки переделываются во внутренние коды интерпретатора. А при вызове по кодам делается switch на 500 строчек.
позвольте, а зачем вам свой интерпретируемый скриптовый субьязык с интерпретатором на регекспах?
я молчу про скорость выполнения скрипта, но еще сколько сил и времени грохать на разработку и отладку.....
за стремление плюс, а за заодно... как говорится, "за изобретение пять, а по предмету неуд" - разве же на регекспах парсеры делают? если все еще интересно, почитайте, как делают другие
Ой, я, наверное, от жизни отстал, ибо все еще пишу на лексе. А там одни сплошные регэкспы.
Это если не придираться к тому, что означает слово parse:)))
насколько я понял возможности языка не дадут написать лучше.
ну да куча goto, а так вроде все адекватно
Правда, это только при считывании, там все строки переделываются во внутренние коды интерпретатора. А при вызове по кодам делается switch на 500 строчек.
я молчу про скорость выполнения скрипта, но еще сколько сил и времени грохать на разработку и отладку.....
Это если не придираться к тому, что означает слово parse:)))