P3695 CYaRon!语

    • 25通过
    • 168提交
  • 题目提供者 lin_toto 站长团
  • 评测方式 云端评测
  • 标签 洛谷原创 O2优化 高性能
  • 难度 省选/NOI-
  • 时空限制 1000ms / 128MB

题解

  • 提示:收藏到任务计划后,可在首页查看。
  • 最新讨论 显示

    推荐的相关题目 显示

    题目背景

    「千歌です」(我是千歌)、「曜です」(我是曜)、「ルビィです」(我是露比)、「3人合わせて、We are CYaRon! よろしくね!」(三人在一起,我们是CYaRon!多多指教哦!)

    CYaRon!的三人在学习了编程之后,决定发明一种自己的编程语言,她们称为CYaRon!语。

    (ltt: 明明是我帮她们发明的。)

    可是,因为洛谷评测机这时候突然爆了,ltt没有时间再帮CYaRon!的三位小姐姐写CYaRon!语的解释器了。

    于是ltt就出了这样一道题,然后等着有人交了AC程序就偷走给小姐姐们。

    题目描述

    以下是一个典型的CYaRon! 语程序。

    { vars
        chika:int
        you:int
        ruby:array[int, 1..2]
        i:int
    }
    # 以上变量默认值均为0
    # 变量名只可是英文字母。
    
    # yosoro语句可以输出一个数字,随后跟一个空格。
    :yosoro 2
    # 输出2和一个空格(以下不再提到空格)。
    
    # set语句可以为变量赋值。
    # 运算符只支持加减号即可。
    :set chika, 1
    :set you, 2
    :yosoro chika + you
    # 上一条语句将输出3
    
    # 以下的判断语句均使用以下的格式:
    # 操作符,表达式,表达式
    # 例如eq, a, 1即C语言中 a==1
    # 所有操作符包括: lt: < gt: > le: <= ge: >= eq: == neq: !=
    
    # 日本来的CYaRon三人没法正确地发出if这个音,因此她们就改成了ihu。
    { ihu eq, chika, 1
        :set you, 3
        :yosoro 1
    }
    # 输出1
    # 以上是ihu语句,无需支持else。
    
    # hor语句同理,
    # for i=1 to you如下
    { hor i, 1, you
        :yosoro i
    }
    # 输出1 2 3
    
    # 如下是while和数组的使用方法。
    :set i, 1
    { while le, i, 2
        :yosoro i
        :set ruby[i], i+1
        :yosoro ruby[i]
        :set i, i+1
    }
    # 输出1 2 2 3
    
    # 数组不会出现嵌套,即只会有a[i]、a[i+2]而不会有类似于a[i+b[i]]这样的。
    
    # CYaRon语的最后一行,一定是一个换行。
    

    你的任务是写一个CYaRon!语的解释器,实现输入CYaRon!语的程序,解释之执行后输出执行结果。

    输入输出格式

    输入格式:

    输入文件全部为CYaRon!语程序,最后一行保证是个空行。

    请处理输入的时候,一直读到EOF为止。

    输出格式:

    该CYaRon!语程序的执行结果。

    具体上,是该CYaRon!语程序所有:yosoro语句的输出。

    输入输出样例

    输入样例#1: 复制
    { vars
        a:int
        b:int
    }
    
    :set a, 1
    :set b, 2
    :yosoro a+b
    
    输出样例#1: 复制
    3

    说明

    对数据做出以下保证:

    1. 输入数据一定是合法的CYaRon!语程序,不包含注释,代码、缩进风格 (四个空格)与上述样例相同。但不保证逗号、运算符前面的空格数量和有无一定相同

    2. 变量名在10个字符以下,仅包含小写英文,数组最大大小为1000,变量最多50个,所有表达式的运算结果,包括变量的值一定在int范围内。 (但数组可能是类似于[2001..3000]的,下标可能范围为0到1亿)

    3. 所有指令小写。

    4. 该程序一定能够在合理的时间、内存限制内执行完毕。

    5. hor语句执行过程中,循环变量、初始值、结束值不会被循环中的代码改变。

    6. 该程序最多500行

    标程展开

    提示
    标程仅供做题后或实在无思路时参考。
    请自觉、自律地使用该功能并请对自己的学习负责。
    如果发现恶意抄袭标程,将按照I类违反进行处理。