熟悉SP语言的BNF定义

程序设计语言SP是一门支持简单算术功能的玩具型程序设计语言,易于分析和实现,适合作为语言实现初学者的处理对象。

SP语言的程序中仅允许使用33个变量,其名字分别为XYZX0X9Y0Y9Z0Z9;所有变量和表达式的类型均为整数类型。

SP语言仅支持四类语句,其语义描述如下:

READ var      从控制台读入一个int 类型的值,并保存在变量var 

WRITE expr   将表达式expr 的值输出到控制台

LET var = expr    将变量var 的当前值设置为表达式expr 的值

GOTO label [IF expr] 跳转到指定的行; 

如果指定表达式expr, 则仅当expr  0 时才跳转

SP语言语法定义的完整BNF描述如下:

<program> 

::= 

<progline> | <program> <progline> 

<progline> 

::= 

<number> : <stmt> | <stmt> 

<stmt> 

::= 

READ <var_id> | 

WRITE <expr> | 

LET <var_id> <expr> | 

GOTO <number> | 

GOTO <number> IF <expr> 

<expr> 

::= 

<term> | <term> <term> | <term> -<term> 

<term> 

::= 

<factor> | <factor> * <factor> | <factor> / <factor> 

<factor> 

::= 

( <expr> | <number> | <var_id> 

<var_id> 

::= 

<letter> | <letter> <digit> 

<number> 

::= 

<digit> | <number> <digit> 

<letter> 

::= 

X Y 

<digit> 

::= 

| ... | 

 

 

A、输入10个数,输出其中的最大值、最小值。

 

LET X = 1;
LET Y = 2;
100: WRITE X;
 X=X+2;
GOTO 100 IF 98-X;
X =2;
Y = Y-1;
GOTO 100 IF Y-1;

 

BFibonaci数列各项为1, 1 , 2 , 3 , 5 , 8 , 13 ,  21, ... ,求第40项。

 

LET X1 = 1;
LET X2 = 1;
LET X3 = 0;
LET Y = 40;
LET Z = 2;
100:X3 = X2 + X1;
X1=X2;
X2=X3;  
Z=Z+1;
GOTO 100 IF Y-Z;
WRITE X3;

 

C.输入10个数 输出最大的

 

LET X = 0;
LET Z = 10;
100:READ Y;
Z = Z-1;
GOTO 300 IF X - Y;
X = Y;
300:GOTO 100 IF Z-1;
WRITE X;

 

 

D.输入一个整数 计算个位的和 直到结果为一位数 552->12->3

 

READ X0;
100:LET X = 0;
LET YYY = 0;
LET Z = 0;
200: LET X = X0/10; 除去个位
LET Y = X0-(X*10); 取得个位
LET Z = Z+Y;  z保存各位相加结果
LET X0 = X0/10;  取低位完成,改变X0
GOTO 200 IF (X/10-1; 除到为1位数为止GOTO 300 IF (Z/10)-1;
LET X0 = Z;
GOTO 100;
300: WRITE Z;

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值