20、解析器、迭代器及相关技术实现

解析器、迭代器及相关技术实现

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 定义为例:


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值