# Silk **Repository Path**: technology-me/silk ## Basic Information - **Project Name**: Silk - **Description**: 简单而高效的编程语言 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-26 - **Last Updated**: 2022-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Silk 定义: ```js var a; int b; var c = 100; int d = 100; c = "hello"; // 合法 d = "world"; // 不合法 ``` ```mermaid classDiagram class AST_Node { ASR_Node* parent } class ExpressionNode class OperatorExpressionNode { ExpressionNode* left std::string middle ExpressionNode* right } class FunctionExpressionNode { std::string function_name ExpressionNode* expression } class FactorNode { std::string value } class VariableFactorNode { std::string type } class NumberFactorNode { unsigned int bits : 6 bool is_unsigned : 1 bool is_float : 1 } class StringFactorNode { unsigned long length } class StatementNode class BlockStatementNode { std::map variables std::list statements } class DetermineStatementNode { std::pair if_statement std::list else_if_statement StatementNode* else_statement } class WhileStatementNode { ExpressionNode* expression StatementNode* statement } class ForStatementNode { bool iterator_mode ExpressionNode* expression[3] StatementNode* statement } class DefineStatementNode { std::string type std::string name ExpressionNode* value } struct ClassStatementNode { std::list parents std::string name std::list public_members std::list protected_members std::list private_members }; ExpressionNode <|-- AST_Node FactorNode <|-- ExpressionNode OperatorExpressionNode <|-- ExpressionNode FunctionExpressionNode <|-- ExpressionNode VariableFactorNode <|-- FactorNode NumberFactorNode <|-- FactorNode StringFactorNode <|-- FactorNode StatementNode <|-- AST_Node BlockStatementNode <|-- StatementNode DetermineStatementNode <|-- StatementNode WhileStatementNode <|-- StatementNode ForStatementNode <|-- StatementNode DefineStatementNode <|-- StatementNode ```