sp源程序

来源:互联网 发布:linux 文件夹权限 用户 编辑:程序博客网 时间:2024/04/28 22:47

 程序设计语言SP是一门支持简单算术功能的玩具型程序设计语言,易于分析和实现,适合作为语言实现初学者的处理对象。
SP语言是一门大小写无关语言,其程序中仅允许使用33个变量,其名字分别为X、Y、Z、X0、…、X9、Y0、…、Y9、Z0、…、Z9;所有变量和表达式的类型均为整数类型。
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 | z | X | Y | Z
<digit>  ::=  0 | 1 | ... | 9

(1) 遵循SP 语言的BNF 定义,编写两个语法正确的SP 源程序。要求在这两个源程序中,用到SP 语言的所有语法构造。
A、运行时输入10个数,然后分别输出其中的最大值、最小值。
 
Read Y;Read Z;Read x1;Read x2;
let Y=0;let Z=0;let x1=1;let x2=10;
100: goto 400 if x1-x2;
     read x;
200: goto 300 if x-z;
              let Y=x;
              let x1=x1+1;
              goto 100;
300: let Z=x;
     let x1=x1+1;
     goto 100;
400: write Y;Write Z;

 

原创粉丝点击