解析器、迭代器及相关技术实现
1. 词法分析器与解析器的使用
当实现了 Lex() 和 Parse() 函数后,就可以对表达式进行解析并计算其值。以下是具体示例代码:
var input = "(13+4)-(12+1)";
var tokens = Lex(input);
WriteLine(string.Join("\t", tokens));
// `(` `13` `+` `4` `)` `-` `(` `12` `+` `1` `)`
var parsed = Parse(tokens);
WriteLine($"{input} = {parsed.Value}");
// (13-4)-(12+1) = -4
操作步骤如下:
1. 定义输入表达式 input 。
2. 调用 Lex() 函数对输入表达式进行词法分析,得到词法单元 tokens 。
3. 输出词法单元。
4. 调用 Parse() 函数对词法单元进行解析,得到解析结果 parsed 。
5. 输出表达式及其计算结果。
2. 函数式范式中的解释
在词法分析或解析过程中产生的元素集合,可以很好地映射到 F# 的判别联合上。以一个数学表达式的 XML 定义为例:
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



