Abel'Blog

我干了什么?究竟拿了时间换了什么?

0%

编译原理-笔记

概述

阅读一下龙书🐲。

第一章

罗马数字的 BNF 语法:

1
2
3
4
5
6
7
8
9
10
<roman> ::= <thousands> <hundreds> <tens> <ones>
<thousands> ::= "" | "M" | "MM" | "MMM"
<hundreds> ::= "" | "C" | "CC" | "CCC" | "CD" | "D" | "DC" | "DCC" | "DCCC" | "CM"
<tens> ::= "" | "X" | "XX" | "XXX" | "XL" | "L" | "LX" | "LXX" | "LXXX" | "XC"
<ones> ::= "" | "I" | "II" | "III" | "IV" | "V" | "VI" | "VII" | "VIII" | "IX"
<ones> ::= <one_to_three> | <four> | <five_to_eight> | <nine>
<one_to_three> ::= "I" | "II" | "III"
<four> ::= "IV"
<five_to_eight> ::= "V" | "VI" | "VII" | "VIII"
<nine> ::= "IX"
flowchart TD
    A[RomanDigit] --> B{基本符号?}
    B --> C[I=1]
    B --> D[V=5]
    B --> E[X=10]
    B --> F[L=50]
    B --> G[C=100]
    B --> H[D=500]
    B --> I[M=1000]
    
    A --> J{减法组合?}
    J --> K[IV=4]
    J --> L[IX=9]
    J --> M[XL=40]
    J --> N[XC=90]
    J --> O[CD=400]
    J --> P[CM=900]
    
    A --> Q{加法重复?}
    Q --> R[II/XX/CC/MM]
    Q --> S[III/XXX/CCC/MMM]
    
    K --> T[组合]
    L --> T
    M --> T
    N --> T
    O --> T
    P --> T
    R --> T
    S --> T
    C --> T
    D --> T
    E --> T
    F --> T
    G --> T
    H --> T
    I --> T
    
    T --> U[有效罗马数字
例:MCMXCIV=1994] classDef basic fill:#e3f2fd classDef subtract fill:#ffebee classDef add fill:#e8f5e8 classDef result fill:#f1f8e9 class C,D,E,F,G,H,I basic class K,L,M,N,O,P subtract class R,S add class U result
flowchart TD
    A[客户发起购买USDT请求] --> B[wallet_service 创建订单]
    B --> C[订单存入数据库]
    C --> D[crontab_service 定时读取订单]
    D --> E[crontab_service 处理订单]
    E --> F[发送订单到 dpay_node]
    F --> G[dpay_node 发起购买操作]
    
    style A fill:#e1f5fe
    style B fill:#f3e5f5
    style C fill:#f3e5f5
    style D fill:#fff3e0
    style E fill:#fff3e0
    style F fill:#fff3e0
    style G fill:#e8f5e8