輸入數學表達式字符串,輸出計算結果。支持豐富運算符與函數,採用遞歸下降解析算法,效率優異。
`+`, `-`(如 `-b`)
`+`, `-`, `*`, `/`, `%`, `^`(冪)
`positive`, `negative`, `abs`, `floor`, `ceil`, `sign`, `sqrt`, `exp`, `log`, `log2`, `log10`, `sin`, `cos`, `tan`, `asin`, `acos`, `atan`, `rand`
`add`, `sub`, `multiply`, `divide`, `max`, `min`, `mod`, `pow`, `atan2`, `rand2`
`lerp`, `clamp`, `gray`, `add3`, `min3`, `max3`, `average3`
`add4`, `min4`, `max4`, `average4`
文法結構(簡化):
expr = term { ('+'|'-') term }
term = factor { ('*'|'/'|'%') factor }
factor = power { '^' power } // 右結合
power = primary
primary = NUMBER | VARIABLE | FUNC_CALL | '(' expr ')' | ('+'|'-') primary
FUNC_CALL = IDENTIFIER '(' [expr {',' expr}] ')'
每層文法規則對應一個解析函數,相互調用形成遞歸下降結構。優先級由調用層級自然編碼。
新版本增加對科學計數法浮點數解析(如 `1.23e-4`),增強數值處理能力。
同一解析核心用於「數學表達式 3D 可視化」項目,展示了解析器的復用性與擴展性。
本工具展示了遞歸下降解析器在數學表達式求值中的經典應用。模塊化設計使運算符/函數擴展極其容易。開源代碼可作為表達式解析、腳本引擎、配置語言解析等項目的起點。遞歸下降雖非最快(不如移位歸約/算符優先),但代碼清晰、易調試、易擴展,工程實踐中極具性價比。