============================================
           URL 语言规范文档
      Universal Runtime Language
              Version 5.0
      OpenOS nos20 · 2026
============================================

一、语言简介
============================================

URL (Universal Runtime Language) 是一种与 C++ 完全兼容的脚本语言,
专为 OpenOS 高级系统工具设计, 在代码实验室模块中运行。

V5.0 新特性:
- AI 助手调用接口 (新!)
- 系统命令调用 (新!)
- 加密解密函数 (新!)
- 网络请求函数 (新!)
- 文件操作函数 (新!)

核心特性:
- 语法与 C++ 完全一致, 学习成本极低
- 无需多余空格, 代码更加紧凑
- 支持 std::cout, std::cin 等标准库语法
- 支持 using namespace std; (可选)
- 支持所有 C++ 基本数据类型
- 完美支持中文字符串, 国际化友好
- 轻量级解释器, 执行效率高
- V5.0 起支持 OpenOS 系统 API 调用

============================================
二、程序头文件 (必须)
============================================

每个 URL 程序必须以头文件开始, 格式如下:

    url..<数字>. oo

示例:
    url..1. oo          // 基础版本
    url..123. oo        // 自定义版本号
    url..2026. oo       // 年份作为版本号
    url..5. oo          // V5.0 标准头

格式说明:
- url..   → 关键字标识, 固定写法
- <数字>  → 版本号或标识号, 可以是任意正整数
- . oo    → 固定结尾, 英文句点 + 空格 + 两个小写字母 o

完整程序示例:
    url..5. oo

    int x=10;
    cout<<x<<endl;

============================================
三、语法特点
============================================

1. 空格规则
   URL 语言与 C++ 完全一致, 不需要多余空格

   // 写法 1: 带空格 (易读性好)
   int x = 10;
   cout << x << endl;

   // 写法 2: 不带空格 (更紧凑)
   int x=10;
   cout<<x<<endl;

   两种写法完全等效, 可根据个人喜好选择

2. 语句结束
   - 所有语句必须以分号 ; 结束
   - 代码块使用 { } 包围

============================================
四、数据类型
============================================

类型        说明                          示例
--------------------------------------------
int         整数类型 (32 位)             int x=10; int y=-5;
float       单精度浮点数                 float f=0.5; float pi=3.14;
double      双精度浮点数 (推荐)           double d=3.1415926;
string      字符串类型                   string s="Hello";
char        字符类型                     char c='A'; char ch='中';
bool        布尔类型                     bool flag=true;

字符串支持:
- 使用双引号包围
- 完美支持中文: string s="你好世界";
- 支持转义符: \n (换行)  \t (制表符)  \\ (反斜杠)  \" (双引号)

============================================
五、变量声明
============================================

语法: <类型> <变量名> = <值>;

示例:
    int x=10;                           // 整数
    int y=20;                           // 整数
    string name="Alice";                // 字符串
    double pi=3.14159265358979;        // 浮点数
    bool isActive=true;                 // 布尔值
    char grade='A';                     // 字符

变量命名规则:
- 必须以字母或下划线开头
- 可以包含字母、数字和下划线
- 区分大小写 (name 和 Name 是不同变量)
- 不能使用关键字作为变量名

============================================
六、输出语句 (cout)
============================================

语法: cout << <值> << endl;

说明:
- <<   → 输出运算符, 可以连续使用
- endl → 换行符, 相当于 \n

示例:
    cout<<"Hello World"<<endl;           // 输出字符串
    cout<<x<<endl;                       // 输出变量
    cout<<"x="<<x<<endl;                 // 混合输出
    cout<<"中文输出: "<<"你好世界"<<endl; // 中文支持

    // 链式输出 (推荐)
    int a=1,b=2;
    cout<<"a="<<a<<", b="<<b<<", sum="<<(a+b)<<endl;

============================================
七、输入语句 (cin)
============================================

语法: cin >> <变量名>;

说明: >> 是输入运算符, 从标准输入读取数据

示例:
    string name;
    cin>>name;
    cout<<"Hello, "<<name<<endl;

    int age;
    cin>>age;
    cout<<"Age: "<<age<<endl;

    // 多个输入
    int x,y;
    cin>>x>>y;
    cout<<"x+y="<<x+y<<endl;

============================================
八、运算符
============================================

1. 算术运算符
   +   加法      a+b          -   减法      a-b
   *   乘法      a*b          /   除法      a/b
   %   取模      a%b          ++  自增      i++ 或 ++i
   --  自减      i-- 或 --i

2. 比较运算符
   ==  等于      a==b         !=  不等于    a!=b
   <   小于      a<b          >   大于      a>b
   <=  小于等于  a<=b         >=  大于等于  a>=b

3. 逻辑运算符
   &&  逻辑与    a&&b         ||  逻辑或    a||b
   !   逻辑非    !a

4. 复合赋值运算符
   +=  加赋      a+=b  →  a=a+b
   -=  减赋      a-=b  →  a=a-b
   *=  乘赋      a*=b  →  a=a*b
   /=  除赋      a/=b  →  a=a/b
   %=  模赋      a%=b  →  a=a%b

============================================
九、条件语句
============================================

1. if 语句
   if(条件){
       语句块
   }

   if(条件){
       语句块1
   }else{
       语句块2
   }

   if(条件1){
       语句块1
   }else if(条件2){
       语句块2
   }else{
       语句块3
   }

   示例:
       int age=18;
       if(age>=18){
           cout<<"成年人"<<endl;
       }else{
           cout<<"未成年人"<<endl;
       }

2. switch 语句
   switch(表达式){
       case 常量1: 语句; break;
       case 常量2: 语句; break;
       default: 语句;
   }

============================================
十、循环语句
============================================

1. for 循环
   for(初始化;条件;更新){
       语句块
   }

   示例:
       for(int i=0;i<5;i++){
           cout<<i<<endl;
       }

2. while 循环
   while(条件){
       语句块
   }

   示例:
       int i=0;
       while(i<5){
           cout<<i<<endl;
           i++;
       }

3. do-while 循环
   do{
       语句块
   }while(条件);

   特点: 至少执行一次

============================================
十一、控制语句
============================================

break;     // 跳出循环或 switch 语句
continue;  // 跳过本次循环, 继续下一次

示例:
    for(int i=0;i<10;i++){
        if(i==5) break;      // 当 i=5 时跳出循环
        cout<<i<<endl;
    }

    for(int i=0;i<10;i++){
        if(i%2==0) continue; // 跳过偶数
        cout<<i<<endl;
    }

============================================
十二、注释
============================================

单行注释: // <注释内容>
多行注释: /* <注释内容> */

示例:
    // 这是单行注释
    int x=10;  // 这也是单行注释 (行尾注释)

    /* 这是
       多行注释
       可以跨越多行 */

============================================
十三、OpenOS 系统 API (V5.0 新增)
============================================

V5.0 起, URL 语言支持调用 OpenOS 内部系统函数。
所有 API 函数名以 goradon_ 开头。

1. AI 助手调用 (需安装 Ollama)

   string ask(string prompt);
       // 向本地 AI 提问, 返回回答字符串

   示例:
       string answer = goradon_ask("什么是 Windows 11?");
       cout<<"AI: "<<answer<<endl;

2. 系统信息查询

   string goradon_sysinfo(string type);
       // type: cpu / mem / disk / net / os / gpu

   示例:
       string cpuInfo = goradon_sysinfo("cpu");
       cout<<"CPU: "<<cpuInfo<<endl;

3. 加密解密 (Fernet 加密)

   string goradon_encrypt(string text);
       // 加密文本, 返回密文
   string goradon_decrypt(string ciphertext);
       // 解密文本, 返回明文

   示例:
       string cipher = goradon_encrypt("MySecret");
       string plain  = goradon_decrypt(cipher);
       cout<<"原文: "<<plain<<endl;

4. 网络请求 (HTTP GET)

   string goradon_httpget(string url);
       // 发起 GET 请求, 返回响应内容

   示例:
       string html = goradon_httpget("https://api.github.com");
       cout<<html<<endl;

5. 文件操作

   bool   goradon_file_exists(string path);
   string goradon_file_read(string path);
   bool   goradon_file_write(string path, string content);
   int    goradon_file_size(string path);
   bool   goradon_file_delete(string path);

   示例:
       if(goradon_file_exists("test.txt")){
           string content = goradon_file_read("test.txt");
           cout<<content<<endl;
       }

6. 系统命令执行 (谨慎使用)

   string goradon_runcmd(string cmd);
       // 执行系统命令, 返回输出

   示例:
       string result = goradon_runcmd("ipconfig");
       cout<<result<<endl;

7. 通知弹窗

   void goradon_notify(string title, string message, string level);
       // level: info / success / warning / error

   示例:
       goradon_notify("提示", "操作完成", "success");

============================================
十四、完整示例程序
============================================

url..5. oo

// 示例 1: Hello World
cout<<"Hello, World!"<<endl;
cout<<"你好, 世界!"<<endl;

// 示例 2: 变量与运算
int a=10;
int b=20;
cout<<"a="<<a<<", b="<<b<<endl;
cout<<"a + b = "<<(a+b)<<endl;

// 示例 3: 条件判断
int score=85;
if(score>=60){
    cout<<"及格"<<endl;
}else{
    cout<<"不及格"<<endl;
}

// 示例 4: for 循环
cout<<"for 循环示例:"<<endl;
for(int i=1;i<=5;i++){
    cout<<"i = "<<i<<endl;
}

// 示例 5: while 循环 (计算 1-100 求和)
int sum=0;
int j=1;
while(j<=100){
    sum+=j;
    j++;
}
cout<<"Sum = "<<sum<<endl;

// 示例 6: 输入输出交互
string name;
cout<<"请输入你的名字: ";
cin>>name;
cout<<"你好, "<<name<<endl;

// 示例 7: AI 助手调用 (需 Ollama)
string ans = goradon_ask("1+1 等于几?");
cout<<"AI: "<<ans<<endl;

// 示例 8: 系统信息
string cpu = goradon_sysinfo("cpu");
cout<<"CPU: "<<cpu<<endl;

// 示例 9: 加密演示
string cipher = goradon_encrypt("MyPassword123");
cout<<"密文: "<<cipher<<endl;
string plain  = goradon_decrypt(cipher);
cout<<"解密: "<<plain<<endl;

// 示例 10: 通知弹窗
goradon_notify("完成", "示例程序执行完毕", "success");

============================================
十五、注意事项
============================================

1. 每个程序必须以头文件 url..<数字>. oo 开始
2. 语句必须以分号 ; 结束
3. 代码块必须使用 { } 包围
4. 条件语句的条件必须用括号 () 包围
5. 循环语句的条件必须用括号 () 包围
6. 字符串支持中文和其他 Unicode 字符
7. 变量名区分大小写
8. 类型名: int, double, float, string, bool, char
9. 与 C++ 一样, 不需要多余的空格
10. 支持 using namespace std; (可选)
11. GORADON API 函数以 goradon_ 开头
12. 危险 API (如 runcmd) 谨慎使用
13. AI 调用需要本地启动 Ollama 服务

============================================
十六、关键字列表
============================================

类型关键字    int, double, float, string, bool, char
控制关键字    if, else, switch, case, default, break, continue
循环关键字    for, while, do
常量          true, false
输入输出      cin, cout, endl
系统 API      goradon_ask, goradon_sysinfo, goradon_encrypt,
              goradon_decrypt, goradon_httpget, goradon_file_*,
              goradon_runcmd, goradon_notify

============================================
十七、V5.0 更新日志
============================================

V4.1 (2026-06-12):
  - 基础 C++ 兼容语法
  - 数据类型 / 运算符 / 流程控制
  - 输入输出
  - 注释规范

V5.0 (2026-06-18) - 当前版本:
  - 新增 OpenOS 系统 API
  - AI 助手调用 (goradon_ask)
  - 系统信息查询 (goradon_sysinfo)
  - 加密解密 (goradon_encrypt / decrypt)
  - 网络请求 (goradon_httpget)
  - 文件操作 (goradon_file_*)
  - 系统命令 (goradon_runcmd)
  - 通知弹窗 (goradon_notify)
  - 兼容 V4.1 全部语法
  - 头文件标准 url..5. oo

============================================
           文档版本: V5.0
           发布日期: 2026-06-18
      © 2026 GORADON Development Team
============================================
