首页 > 其他分享 >5.9 Passing state parameter 传递 state 参数

5.9 Passing state parameter 传递 state 参数

时间:2025-01-05 14:11:13浏览次数:1  
标签:解析器 scale AST 5.9 --- state 参数 Passing

By default, the parser doesn't take any argument other than the input. When building the AST, it might be useful to pass parameters to the parser, which might be needed to the construction of the tree.

MST --- 默认情况下,解析器不接受 input 以外的任何参数。在构建 AST 时,将参数传递给解析器可能很有用,这可能是构建树所必需的。

GPT --- 默认情况下,解析器除了输入之外不接受任何参数。在构建抽象语法树(AST)时,可能需要向解析器传递一些参数,这些参数可能在构建树时是必需的。

Going back to the calculator4 example it is possible to pass an argument to the parser :

MST --- 回到 calculator4 示例,可以将参数传递给解析器:

GPT --- 回到 calculator4 示例,可以向解析器传递参数:

grammar(scale: i32);
Num: i32 = {
    r"[0-9]+" => i32::from_str(<>).unwrap()*scale,
};

Here the parser will accept a scale parameter that will scale every number encountered.

MST --- 在这里,解析器将接受一个 scale 参数,该参数将缩放遇到的每个数字。

GPT --- 在这里,解析器将接受一个 scale 参数,用于缩放每个遇到的数字。

We can then call the parser with the state parameter :

#[test]
fn calculator8() {
    let scale = 2;
    let expr = calculator8::ExprParser::new()
        .parse(scale,"11 * 22 + 33")
        .unwrap();
    assert_eq!(&format!("{:?}", expr), "((22 * 44) + 66)");
}

For a more practical example with a custom tree structure, check out this parser using this structure to build the AST.

MST --- 有关自定义树结构的更实际示例,请查看使用此结构构建 AST 的解析器。

GPT --- 对于一个更实际的例子,可以查看这个解析器,它使用自定义树结构来构建 AST。

Note: The state parameter must implement the Copy trait. For types that don't implement Copy, you should pass them as a reference instead.

MST --- 注意: state 参数必须实现 Copy trait。对于未实现 Copy 的类型,应改为将它们作为引用传递。

GPT --- 注意:state 参数必须实现 Copy 特征。对于那些没有实现 Copy 的类型,应该将它们作为引用传递。

标签:解析器,scale,AST,5.9,---,state,参数,Passing
From: https://www.cnblogs.com/Tifahfyf/p/18653312

相关文章

  • How does React State Actually Work?
    HowdoesReacthandleupdates?HowReactCommunicatesWiththeRenderer?therendererthathandlestheupdatessetStatecallsrendererTheUpdateWhenwecallsetState,Reactaddsthepasseddatatoaqueue.Theupdatesarelaterhandledonebyon......
  • Invalid bound statement (not found): com.ruoyi.mapper.SsbxRepairMapper.insert解
    1.问题场景             今天代码写好之后测试的时候发现了这样一个报错,翻译一下是:执行一个名为com.ruoyi.mapper.SsbxRepairMapper.insert的SQL映射语句(即Mapper中的方法),但是MyBatis无法找到对应的<insert>语句定义。2.问题原因           ......
  • RealtimeLogManager.getCurrentState
    ObjectRealtimeLogManager.getCurrentState()基础库2.19.4开始支持,低版本需做兼容处理。小程序插件:不支持功能描述实时日志会将一定时间间隔内缓存的日志聚合上报,如果该时间内缓存的内容超出限制,则会被丢弃。此方法可以获取当前缓存剩余空间。>注意:基础库内部在对日......
  • WPF VisualStateManager VisualStateGroups VisualState ColorAnimation
    <Windowx:Class="WpfApp120.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • Rules Of JSX & 渲染列表 & ‼️State
    JSX只能拥有一个root元素,即只能有一个父元素。React不会渲染true或false到界面上,但会渲染0,1。isOpen&&<p>Hello!</p>上述短路表达式意为:只有当isOpen为真时,才会执行第二部分内容,返回第二部分内容。如果isOpen为假且它的值为0,表达式会返回0这个值本身。......
  • Vulnhub-SolidState打靶
    目录一、nmap扫描二、pop3泄露的ssh密码登录ssh,并rbash逃逸三、root权限脚本反弹shell提权四、总结一、nmap扫描nmap-sT--min-rate10000192.168.213.141 -oAnmapscan/port扫描tcp开放了那些端口,保存到nmap/port中nmap-sU --min-rate10000192.168.213.141......
  • SolidState靶机通关教程及提权
    声明!本文章及工具分享仅仅只是供大家学习交流为主,如有任何触犯法律的行为,均与本人及团队无关!!!工具链接:https://pan.quark.cn/s/33795a10039c一、靶机搭建点击扫描虚拟机选择靶机使在文件夹即可建议kali和靶机的网络都使用NAT模式二、信息收集1.扫出ip信息nmap-sN192......
  • Flink State 状态原理解析
    作者:京东物流吴云涛一、FlinkState概念State用于记录Flink应用在运行过程中,算子的中间计算结果或者元数据信息。运行中的Flink应用如果需要上次计算结果进行处理的,则需要使用状态存储中间计算结果。如Join、窗口聚合场景。Flink应用运行中会保存状态信息到State对......
  • 用户状态迁移工具(User State Migration Tool,USMT)是微软提供的一种命令行工具,旨在帮助
    用户状态迁移工具(USMT)概述|MicrosoftLearn用户状态迁移工具(USMT)5W1H结构文章1.什么是用户状态迁移工具(USMT)?(What)用户状态迁移工具(UserStateMigrationTool,USMT)是微软提供的一种命令行工具,旨在帮助IT管理员在Windows操作系统之间迁移用户数据和配置。USMT主......
  • 由 Mybatis 源码畅谈软件设计(二):MappedStatement 和 SqlSource
    作者:京东保险王奕龙本节我们来介绍org.apache.ibatis.mapping.MappedStatement(映射SQL语句声明的类),它是MyBatis框架中的一个核心类,也是向后不断学习Mybatis源码的基础。在这部分源码中,最值得关注的设计原则是“信息隐藏”,它是在《软件设计哲学》中提到的一个观点,简单来说就......