Skip to content

A simple interpreter designed for the language specified for drawing.

Notifications You must be signed in to change notification settings

qhb1001/A-simple-interpreter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

简介

三个文件夹,分别表示使用Python手工编写解释器前端后端代码使用FLEX生成词法分析器,BISON生成语法分析器使用ANTLR编写前端后端代码,编写监听者遍历器完成语义动作

函数绘图语言支持的语句包含四类,分别是:

  • 循环绘图语句 FOR-DRAW

    语法:FOR T FROM 起点 TO 终点 STEP 步长 DRAW(横坐标,纵坐标);

    语义:令T从起点到终点,每次改变一个步长,绘制出由(横坐标,纵坐标)所规定的点的轨迹。其中横纵坐标可以为复杂函数。

    举例:FOR T FROM 0 TO 2*PI STEP PI/50 DRAW(COS(T),SIN(T));

    说明:绘制一个原点在(0,0)的单位圆

  • 比例设置语句 SCALE

    语法:SCALE IS (横坐标比例因子,纵坐标比例因子);

    语义:设置横纵坐标的比例,并分别按照比例因子进行变化。

    举例:SCALE IS (100,100);

    说明:将横纵坐标的比例设置为1:1,并且放大100倍。

  • 坐标平移语句 ORIGIN

    语法:ORIGIN IS (横坐标,纵坐标);

    语义:将坐标系的原点平移到横坐标和纵坐标规定的点处。

    举例:ORIGIN IS (360,240);

    说明:将原点从(0,0)平移到(360,240)处。

  • 角度旋转语句 ROT

    语法:ROT IS 角度;

    语义:逆时针旋转角度所规定的弧度值。

    举例:ROT IS PI/2;

    说明:逆时针旋转PI/2,即逆时针旋转90度。

结果展示

输入文本

for t from 0 to 2*pi step pi/50 draw(16*(sin(t))**3,13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t));
for t from 0 to pi*20 step Pi/50 draw(70*(((1-1/(10/7))*Cos(T)+1/(10/7)*Cos(-T*((10/7))))), 70*((1-1/(10/7))*Sin(T)+1/(10/7)*Sin(T*((10/7))))); 

输出结果

About

A simple interpreter designed for the language specified for drawing.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published