# Janus **Repository Path**: colidstudio/Janus ## Basic Information - **Project Name**: Janus - **Description**: No description available - **Primary Language**: C++ - **License**: MIT - **Default Branch**: 2.1.1 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-31 - **Last Updated**: 2025-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Janus ### 声明:[教程详见](https://gitcode.com/langhat/janus-course) #### 介绍 Janus 是一款面向快速原型开发的轻量级解释型语言,其设计融合了函数式编程的灵活性与脚本语言的简洁性。名称源于罗马神话中的双面神,象征语言兼顾易用性与扩展性。核心特性包括: - **极简内核**:解释器核心代码 <900 行 - **动态类型**:自动推断变量类型 - **跨平台**:原生支持 Windows/Linux 终端 - **交互式环境**:提供实时执行和调试能力 - **可扩展架构**:支持自定义指令和类型系统 #### 软件架构 Janus 采用分层解释器架构: ```mermaid graph TD A[词法分析] --> B[指令切割] B --> C[类型系统处理] C --> D[指令解释执行] D --> E[运行时环境] subgraph 核心模块 A -->|预处理| B B -->|转义处理| C C -->|动态类型| D end E --> F[变量存储] E --> G[文件I/O] E --> H[系统交互] ``` #### 安装教程 1. **编译要求**: - GCC 或 Clang 编译器 - C++11 标准库 2. **编译步骤**: 下载janus.cpp,并编译 #### 使用说明 ### 基础语法 ```janus # 单行注释 print "Hello, Janus!" # 语句注释 # 代码块结构 if condition { print "Block statement" } ``` ### 数据类型系统 | 类型标记 | 描述 | 示例 | 转换函数 | |----------|------------|----------------|--------------| | `s` | 字符串 | `"text"` | `bcmstr` | | `i` | 整型 | `-42` | `bcmint` | | `c` | 字符 | `'A'` | `bcmchar` | | `b` | 布尔 | `true`/`false` | `bcmbool` | | `p` | 指针 | `ptr_var` | `bcmptr` | | `f` | 函数 | `func_name` | `bcmfunc` | | `o` | 文件句柄 | `file_handle` | - | ### 变量操作 ```janus # 声明与赋值 let message "Hello, World!" let count 5 let is_valid true # 指针操作 let arr new 'i' 3 # 创建整型数组 let [arr 10 # arr[0] = 10 let element_ptr padd arr 1 # 获取第二个元素地址 let [element_ptr 20 # arr[1] = 20 ``` ### 流程控制 **条件分支**: ```janus if == count 5 { print "Count is five" } ``` **循环结构**: ```janus # While 循环 let i 3 while > i 0 { print "Countdown: " i let i - i 1 } # 带条件的循环 while != input "exit"{ } ``` ### 函数定义 ```janus # 定义加法函数 if false { func add a b { ret + a b } } # 函数调用 let result add 3 5 print "3+5=" result # 输出 8 ``` ### 文件操作 ```janus # 文件写入 let file open "data.txt" "w" out file "Sample text\n" "Additional content" close file ``` ### 系统交互 ```janus # 执行系统命令 shell "ls -l" # 获取系统信息 if WIN32 { print "Running on Windows" } # 获取当前路径 print "Executable path: " JANpost ``` ## 核心指令参考 | 指令 | 功能描述 | 示例 | |---------------|------------------------------|--------------------------| | `let` | 变量声明/赋值 | `let count 5` | | `print` | 控制台输出 | `print "Value:" var` | | `scan` | 控制台输入 | `scan name age` | | `input` | 整行输入 | `let text input` | | `if`/`while` | 流程控制 | `if > x 0 { ... }` | | `func` | 函数定义 | `func square x` | | `ret` | 函数返回 | `ret result` | | `open`/`close`| 文件操作 | `let f open "file" "r"` | | `out`/`in` | 文件读写 | `out f "data"` | | `new`/`padd` | 内存管理 | `let arr new 'i' 10` | | `srand`/`rand`| 随机数生成 | `srand 42 #换行 let r rand` | ## 最佳实践 1. **类型安全**: ```janus # 显式类型转换 let int_val bcmint string_var let str_val bcmstr int_var ``` 2. **错误处理**: ```janus let file open "data.txt" "r" if == file.ty 'o' { # 文件操作 ret () } print "File open failed!" ``` 3. **模块化开发**: ```janus # 模块导入 Import C:\math_utils.janus #虚构路径 # 使用导入函数 let result call math_utils.sqrt 16 ``` ## 关于交互式环境的(IJanus) #### 安装教程 1. **编译要求**: - GCC 或 Clang 编译器 - C++11 标准库 2. **编译步骤**: 下载IJanus.cpp,并编译 功能: 1. **交互模式** - 输入代码后以 `#end` 结束执行 - 支持多行代码块输入 - 实时显示执行耗时和返回值 2. **环境控制** - `#clear`:清空所有变量和代码缓存 - `#show`:启用详细执行信息输出 - `#hide`:关闭非必要输出信息 - `#exit`:退出交互环境 ## 参与贡献 1. **贡献流程**: ```mermaid graph LR A[Fork 仓库] --> B[创建preX.X.X分支] B --> C[提交代码] C --> D[创建 Pull Request] D --> E[代码审核] E --> F[合并到主分支] ``` 2. **开发准则**: - 遵循 C++11 标准 - 新增功能需提供测试用例 - 文档与代码同步更新 ## 性能优化 ```janus # 循环优化示例 let arr new 'i' 10000 let i 0 while < i 10000 { let [padd arr i * i 2 let i + i 1 } ``` ## 学习资源 - 在线体验:无 - 示例仓库:https://gitcode.com/bdfzpt/Janus-examples #为创建 - 社区论坛:无 - 视频教程:无 > **跨平台提示**:Janus 在 Windows 和 Linux 下提供完全一致的行为,路径分隔符自动转换 ```janus # 跨平台路径处理 let config_path + JANpost "/config.cfg" print "Config path: " config_path ```