Интерпретатор на языке Racket.
программа, генерирующая SVG-изображения. Интерпретатор оценивает данную программу и возвращает строку, содержимое которой является SVG-изображением (детальное объяснение задания отправлю). Вычисление выражения в отношении программы SVGen возвращает строку, представляющую изображение SVG. Выходная строка генерируется вызовами функций SVG-примитивов, которые генерируют соответствующие теги SVG. Семантика SVG-примитивов определяется следующим образом:
The (circle x y r style)
преобразуется в SVG-тег <circle>, где x, y - координаты начала координат, r радиус и style строка параметров стиля. Например,
- координаты начала координат, радиус и строка параметров стиля.
Например,
> (circle 50 40 20 "fill:blue")
<circle cx="50" cy="40" r="20" style="fill:blue"/>
тест кейсы (не все):
линия
> (display (execute 400 400 '()
'(line 10 20 30 40 "stroke:black;stroke-width:5")))
<svg width="400" height="400">
<line x1="10" y1="20" x2="30" y2="40" style="stroke:black;stroke-width:5"/>
</svg>
круг
> (display (execute 400 400
'((define STYLE "fill:red"))
'(circle 200 200 (floor (/ 200 3)) STYLE)))
<svg width="400" height="400">
<circle cx="200" cy="200" r="66" style="fill:red"/>
</svg>