易码技术论坛

 找回密码
 加入易码
搜索
查看: 164|回复: 0

自己开发的用于C#的脚本语言,类似C吧(支持插件,可自己函数)

[复制链接]
发表于 2011-2-24 21:30:17 | 显示全部楼层 |阅读模式
目前刚刚测试完成,支持基本的四种变量:bool、char、int、string
暂时不支持数组。
代码如下:
  1. using System;
  2. using System.Collections.Generic;

  3. namespace ULanguage
  4. {
  5.     class Program
  6.     {
  7.         public static void Main(string[] args)
  8.         {
  9.             UScript.Main ulm = new UScript.Main();
  10.             UScript.SystemPlug sp = new UScript.SystemPlug();
  11.             ulm.InstallPlug(sp);
  12.             
  13.             Console.Write("请输入脚本文件的路径:");
  14.             string scriptPath = Console.ReadLine();
  15.             
  16.             if (!ulm.Load(scriptPath)) // Load函数进行脚本预处理
  17.             {
  18.                 foreach (string err in ulm.GetErrorMessage())
  19.                 {
  20.                     Console.WriteLine(err);
  21.                 }
  22.             }
  23.             else
  24.             {
  25.                 if (!ulm.Execute()) // 执行脚本
  26.                 {
  27.                     foreach (string err in ulm.GetErrorMessage())
  28.                     {
  29.                         Console.WriteLine(err);
  30.                     }
  31.                 }
  32.                 else
  33.                 {
  34.                     Console.WriteLine("Success!");
  35.                 }
  36.             }
  37.             
  38.             ulm.RemovePlug(sp);
  39.             Console.ReadKey(true);
  40.         }
  41.     }
  42. }
复制代码
脚本文件(实现的功能是判断一个数是否为质数):
  1. function check(int:number):int
  2. {
  3.     int:div = 2;
  4.     int:mod = 0;
  5.    
  6.     if (number == 2)
  7.     {
  8.         return (1);
  9.     }
  10.    
  11.     if (number < 2)
  12.     {
  13.         return (0);
  14.     }
  15.    
  16.     while (1 == 1)
  17.     {
  18.         if (number == div)
  19.         {
  20.             return (1);
  21.         }
  22.         
  23.         mod = number % div;
  24.         
  25.         if (mod == 0)
  26.         {
  27.             return (0);
  28.         }
  29.         
  30.         div = div + 1;
  31.     }
  32. }

  33. function main():void
  34. {
  35.     string:str = "";
  36.     int:num = 0;
  37.    
  38.     print("请输入一个数字:");
  39.     str = readline();
  40.     num = stoi(s);
  41.    
  42.     int:ret = check(num);

  43.     str = itos(num);
  44.    
  45.     if (ret == 0)
  46.     {
  47.         println(str + "不是质数。");
  48.     }
  49.     else
  50.     {
  51.         println(str + "是质数。");
  52.     }
  53. }
复制代码
没有学习过编译原理,所以做的很简陋,正在慢慢摸索,呵呵,能锻炼自己就好..

ULanguage.rar

14.94 KB, 下载次数: 23

您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2022-5-27 11:34 , Processed in 0.025812 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表