支持学科:数据结构、计算机组成原理、编译原理
测试基于自然语言提取的句子,展示 AST 并在两侧对比不同样式语法的展示效果。
针对经典算术表达式的二义性验证。系统会尝试搜索两套不同的最左推导。
在规范规约中,句柄是指右句型中匹配某个产生式右部,并且将其替换为左部非终结符后,代表了最右推导,最后一步(即最左规约的当前步)的那个子串。
输入文法产生式 (以空格分隔符号,用大写字母表示非终结符),系统将自动判断其所属的最高型文法。
自动扫描源代码,切分为五大类单词符号(Token):关键字、标识符、常数、运算符、界符。
严格基于状态机的逐字符扫描,支持最长匹配、超前搜索与指针回退。
[DFA 5-Tuple Definition M = (K, Σ, f, S, Z)] K (States) : { q0, q_id, q_int, q_dot, q_float, q_op1, q_slash, q_and, q_or, q_cmt, q_delim, q_err } Σ (Alphabet): [a-zA-Z_], [0-9], [+ - * / % = < > ! & |], [ ( ) [ ] { } ; . ], [\s \t \n] S (Start) : q0 Z (Accept) : { q_id(⊙), q_int(⊙), q_float(⊙), q_op1(⊙), q_slash(⊙), q_delim(⊙) } * ⊙ denotes Accept States (requires rollback if not exact match) [Transition Function f: State x Input -> State] q0 (Start) ├── [a-zA-Z_] ─────────➔ q_id ────(loop: [a-zA-Z0-9_]) ──➔ ⊙ Accept (KW/ID) │ ├── [0-9] ─────────────➔ q_int ───(loop: [0-9]) ─────────➔ ⊙ Accept (Int NUM) │ └── [.] ──➔ q_dot ──([0-9])──➔ q_float ──(loop: [0-9]) ➔ ⊙ Accept (Float NUM) │ ├── [+ - * % = < > !] ─➔ q_op1 ───([=])────────────────➔ ⊙ Accept (Compound OP, e.g., +=, ==) │ └── (other) ──────────────➔ ⊙ Accept (Single OP, Rollback) │ ├── [/] ───────────────➔ q_slash ─([/])──➔ q_cmt ──(loop: [^\n]) ──➔ q0 (Skip Comment) │ └── (other) ──────────────➔ ⊙ Accept (Divide OP, Rollback) │ ├── [&] ───────────────➔ q_and ───([&])────────────────➔ ⊙ Accept (Logical AND: &&) │ ├── [|] ───────────────➔ q_or ────([|])────────────────➔ ⊙ Accept (Logical OR: ||) │ └── [ ( ) [ ] { } ; . ]➔ q_delim ─────────────────────➔ ⊙ Accept (Delimiter)
等待启动扫描...
| 单词 (Lexeme) | 类别 | 二元组 |
|---|