p4 language learning :Part 1(学习笔记)

CS224n: Natural Language Processing with Deep Learning 笔记、文献及知识点整理 (三)词向量(三) 词向量:引言、SVD和Word2Vec 关键词:NLP(自然语言处理)、词向量、SVD(奇异值分解)、Skip-gram、CBOW(连续词袋)、负采样、层级Softmax、Word2Vec 本文上一部分请见:CS224n: Natural Language Processing with Deep Learning 笔记、文献及知识点整理 (二)词向量(二)_放肆荒原的博客-优快云博客 4. 基于迭代的方法 Word2vec (Iteration Based Methods - Word2vec 阅读详情

p4 language learning :Part 1

1.1 Syntax and semantics

P416的完整语法在附录E中给出,使用Yacc / Bison语法描述语言。 该文本基于相同的语法。 提供语法摘录时,我们采用了几种标准约定:

大写符号表示语法中的终端。
语法节选以BNF表示法如下:

p4program
  : /* empty */
  | p4program declaration
  | p4program ';'
  ;

注:附录E可以在文章末尾所给的链接中找到

伪代码(Pseudo-code)(主要用于描述各种P4构造的语义)以固定大小的字体显示,如以下示例所示:

ParserModel.verify(bool condition, error err) {
    if (condition == false) {
        ParserModel.parserError = err;
        goto reject;
    }
}

我们根据执行传统命令式代码的抽象机(abstract machine)来描述P4的语义。 每个P4子语言(解析器,控件)都有一个抽象机。 本文以伪代码和英文描述了抽象机。

P4编译器可以自由重组它们以任何方式生成的代码,只要按照本规范的描述保留了P4程序的外部可见行为,其中外部可见行为定义为:

The input/output behavior of all P4 blocks, and
The state maintained by extern blocks.
1:所有P4块的输入/输出行为
2: 由外部块保持的状态

注:伪代码解释; 抽象机解释

1.2 Preprocessing

为了帮助从多个源文件组成程序,P4编译器应支持C预处理程序功能的以下子集:

#define                           //for defining macros (without arguments)
#undef
#if #else #endif #ifdef #ifndef #elif
#include

预处理程序还应删除序列反斜杠换行符(ASCII码92、10),以便在格式化时方便地将内容拆分为多行。

可能会支持其他C预处理器功能,但不能保证,例如带有参数的宏。与C类似,#include可以在双引号或<>中指定文件名

# include <system_file>
# include "user_file"

两种形式之间的区别在于,当路径未完全指定时,预处理器搜索头文件的顺序

P4编译器应正确处理可能在预处理期间生成的#line指令。
此功能允许从多个源文件构建P4程序,这些文件可能由不同的程序员在不同的时间生成:

1:本文档中定义的P4核心库(the P4 core library)
2:建筑(architecture),定义数据平面接口和外部模块
3:用户定义的有用组件库( (user-defined libraries of useful components )(例如,标准协议标头定义)
4:P4程序,用于指定每个可编程块的行为。

注:
#line 的作用是改变当前行数和文件名称,它们是在编译程序中预先定义的标识符命令的基本形式如下:
#line number[“filename”]
其中[ ]内的文件名可以省略。例如:
#line 30 a.h
其中,文件名a.h 可以省略不写。
这条指令可以改变当前的行号和文件名,例如上面的这条预处理指令就可以改变当前的行号为30,文件名是a.h。初看起来似乎没有什么用,不过,他还是有点用的,那就是用在编译器的编写中,我们知道编译器对C 源码编译过程中会产生一些中间文件,通过这条指令,可以保证文件名是固定的,不会被这些中间文件代替,有利于进行分析。

注释来源网址:C语言中文网

1.2.1 P4 core library

P4语言规范定义了一个核心库(core library),其中包括几个常见的编程构造。 附录B中提供了核心库的描述。所有P4程序都必须包括核心库。 包括核心库是用:

# include <core.p4>

1.3 Lexical constructs

所有P4关键字仅使用ASCII字符。 所有P4标识符只能使用ASCII字符。 P4编译器应正确处理注释和字符串文字中包含8位字符的字符串。 P4区分大小写。 空格字符(包括换行符)被视为标记分隔符。 缩进是自由形式; 但是,P4具有类似C的块结构,并且我们所有的示例都使用C样式的缩进。 制表符被视为空格。

IDENTIFIER(标识符):以字母或下划线开头,并包含字母,数字和下划线
TYPE(类型):表示类型名称的标识符
INTEGER(整数):整数文字
DONTCARE:下划线
诸如RETURN之类的关键字。 按照惯例,每个关键字终端对应于具有相同拼写但使用小写字母的语言关键字。 例如,RETURN终端对应于return关键字。

1.3.1 Identifiers

标识符:不赘述,和C基本一致。

1.3.2 Comments

注释:不赘述,和C++基本一致。

1.3.3 Literal constants

1.3.3.1 Boolean literals

布尔类型:ture 和 false两种

1.3.3.2 Integer literals

整型类型:都为正数且为任意精度
默认为10进制可以使用前缀改变进制:
0x or 0X indicates base 16 (hexadecimal)
0o or 0O indicates base 8 (octal)
0b or 0B indicates base 2indicate

数字文字的宽度(以位为单位)可以由一个无符号数字前缀指定,该前缀由多个位数和一个符号指示符组成:

w indicates unsigned numbers
s indicates signed numbers

直接上例子:

32w0xFF        // a 32-bit unsigned number with value 255
32s0xFF        // a 32-bit signed number with value 255
8w0b10101010   // an 8-bit unsigned number with value 0xAA
8w0b_1010_1010 // same value as above
8w170          // same value as above
8s0b1010_1010  // an 8-bit signed number with value -86
16w0377        // 16-bit unsigned number with value 377 (not 255!)
16w0o377       // 16-bit unsigned number with value 255 (base 8)

这个部分还是比较简单的,好好掌握!

笔者注:
1.做这个学习笔记的目的是自己在刚刚开始学习这个部分时,在哪里都找不到学习的资料,而找到的资料是纯英语版的,学习难度较大,希望做这个系列可以坚持下来,一方面帮助想学p4的同学尽快入门,另一方面督促自己学习。
2.这个学习笔记几乎都来源于P416 Language Specification,大家可以进入超链接查看原文,借用google翻译了大部分,有些名词怕翻译不准,显示了原词,若有错误欢迎指正。
3.今天先学到这,剩下的明天继续(希望有时间~),这里主要学语法,后期尽量写一下实验操作和实验遇到的问题,语法的前面部分的有所省略,大家可以结合翻译软件好好读一下代码,我觉得会对理解数据包的处理过程理解有帮助!
4.最后如果有大神对p4的学习有建议,十分欢迎评论留言,我现在对它的学习还是很茫然,期待得到大家的帮助。

2021 NLP前沿快照:ByT5、BPR与Graph4NLP实战解析 自然语言处理(NLP)作为人工智能的核心分支,其技术演进正从静态模型向动态工程实践加速迁移。理解字节级建模(如ByT5)、二值化检索(如BPR)和图神经网络融合(如Graph4NLP)等关键技术,需回归原理本质:ByT5通过UTF-8字节流提升噪声鲁棒性,BPR以二值哈希实现内存压缩与检索加速,Graph4NLP则用显式图结构弥补序列模型的归纳偏置缺陷。这些方法不仅支撑社交媒体分析、开放域问答、生物医学文本理解等典型场景,更标志着NLP工程范式从‘调参驱动’转向‘问题驱动’与‘数据感知’。本文基于ACL 2 阅读详情

相关推荐

VLA-2025-03:GR00T N1【骨架:Eagle-2;端到端双系统VLA:S2 VLM+S1 DiT+FM;数据:单/双臂+人形,机器人+人类+仿真+神经共592.9M帧/8375.7小时】

通用机器人需要多功能的躯体和智能的头脑。近年来,人形机器人的发展在构建人类世界中通用自主性的硬件平台方面展现出巨大潜力。一个基于海量多样化数据源训练的机器人基础模型,对于使机器人能够推理新情况、稳健应对现实世界的多变性以及快速学习新任务至关重要。为此,我们推出了GR00T N1,一个面向人形机器人的开放基础模型。GR00T N1是一个具有双系统架构的视觉‑语言‑动作(VLA)模型。视觉语言模块(系统2)通过视觉和语言指令来解读环境。随后的扩散Transformer模块(系统1)实时生成流畅的电机动作。

u013250861的博客 287

P4语言编程详解

1.源码目录结构 P4项目源码可以在github上直接获取(https://github.com/p4lang)。P4项目由很多个单独的模块组成,每个模块就是一个子项目,下面分别简单介绍一下各模块的功能。 (1)behavioral-model 模拟P4数据平面的用户态软件交换机,使用C++语言编写,简称bmv2。P4程序首先经过p4c-bm模块编译成JSON格式的配置文件,然后将配...

weixin_34375251的博客 3883

NLP项目实战方法论:从信号捕捉到技术选型

自然语言处理(NLP)不仅是模型训练与调优的技术过程,更是一种面向真实场景的问题求解范式。其核心原理在于将非结构化语言数据建模为可计算的模式结构,并通过上下文感知、任务切片与领域迁移实现能力泛化。技术价值体现在对齐业务目标的能力——如用GLGE基准诊断模型偏科、以DataLoader参数优化GPU利用率、将语言解释编译为ExpBERT的结构化特征。典型应用场景覆盖智能客服问答生成、工业质检图像语义建模、法律文书逻辑校验等跨域任务。本文基于一份被长期低估的NLP情报简报,系统梳理其中可复现的工程线索与决策快照

weixin_30291791的博客 326

P4 Language Interface (PI) 开源项目指南

P4 Language Interface (PI) 开源项目指南 项目介绍 P4 Language Interface(PI)是P4.org社区开发的一个关键组件,旨在提供一个统一的接口来管理基于P4程序的数据平面设备。P4是一种高级编程语言,允许程序员定义网络数据包的处理逻辑。PI项目使得编写的P4程序能够与多种控制器和数据平面对话,简化了从软件到硬件的部署流程。它支持多种后端如BMv2、P4...

gitblog_00296的博客 396

强化学习+知识图谱+模块化智能体:AI系统架构实战解构

强化学习(RL)突破传统预测范式,建模序贯决策以优化长期价值;知识图谱(KG)超越数据存储,提供可推理的结构化语义支撑;模块化AI智能体则通过标准化协议(如MCP)实现能力解耦与弹性编排。三者融合正推动AI从‘单点智能’迈向‘可解释、可治理、可演进’的系统级智能。本文聚焦电商推荐、股票分析、知识融合等典型场景,详解Q-learning状态抽象、KG冲突消解、Router分层意图识别等工程落地关键,覆盖从算法原理到生产级容错的完整链路。

466

P4 可编程语言

针对交换业务的可编程实现,用于SDN的具体实现方法和策略,作为当前最流行的的开发方式和方法.

p4 language learning :Part 2(学习笔记)

p4 language learning :Part 2 2.1 String literals 字符串文字(字符串常量)被指定为任意的8位字符序列,并用双引号引起来。P4不会对字符串进行任何有效性检查(即它不会检查字符串是否代表合法的UTF-8编码)。 注:UTF-8(8位元,Universal Character Set/Unicode Transformation Format)是针对Unicode的一种可变长度字符编码。它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASC

maxkd的博客 674

TC21xTC22x_DS_v1_0.pdf

IFX TC2系列单片机的芯片手册,供开发人员使用,单片机开发,IFX单片机开发 TX212 TC220 dengshie

P4语言的特性、P4语言和P4交换机的工作原理和流程简介

现有的SDN解决方案将控制平面与转发平面分离,并为我们提供了控制平面的可编程能力。而事实上,目前通过软件编程实现的控制平面的功能,在传统的高级交换机和路由器上也都能实现,差别是厂商把这些功能固化在了系统/硬件中,这些系统/硬件是封闭的,第三方难以介入进行定制或二次开发。虽然一些高级设备提供了SDK,使得用户能够进行一定程度的定制,但也必须受厂商所制定的规范的限制,能做到的事情十分有限。目前SDN所...

Tasdily的博客 1万+

ESP32 STA AP模式下,设备连接 ESP的AP 后无法上网,无法访问域名上网(或者Failed to enable NAPT)

ESP32 STA AP模式下,设备连接 ESP的AP 后无法上网,无法访问域名上网(或者Failed to enable NAPT)1.可能是ESP STA模式未成功连接到路由器,确保 STA 成功连接到外部网络。2.检查 STA 和 AP 的网络配置是否正确,避免子网冲突。3.ESP32的NAPT功能未正确启用,确保 menuconfig 中已启用 IP_NAPT。4.DNS服务器未正确配置。

qq_34885669的博客 1540

STM32读取BQ40Z50的数据

TI电池管理芯片BQ40Z50,通信协议是SMBUS,类似IIC,速率要求10-100KHz   用的STM32F103的硬件IIC读取电池的各种数值,源代码如下: ​ #include "iic.h" #include "stdio.h"  //***************************************************** // IIC2初始化函数:初始化ST...

百步登峰的博客 1万+

P4学习笔记(二)一个简单P4交换机实现

P4学习笔记(二)一个简单P4交换机实现 文章目录P4学习笔记(二)一个简单P4交换机实现1、 架构模型2、预定义模块详细描述2.1 Arbiter 模块2.2 Parser runtime 模块2.3 Demux 模块3、代码声明文件4、代码实现文件 本节主要讲诉利用P4实现一个最简单的交换机。首先会讲一下交换机的架构,然后给出具体的P4代码实现。 1、 架构模型 简单P4交换机(VSS:very simple switch)它只是一个教学示例,说明了可编程交换机如何利用P4实现和代码编写。VSS具有许多

程序员学编程 的专栏 1万+

通讯模块_三菱IQ-R PLC串口通讯模块RJ71C24进行Modbus-RTU通讯

在日常的选型中,很多电气工程师咨询我,三菱iQ-R系列有没有Modbus通讯模块,我在这里可以肯定的回复您,这个肯定是有的;我们共有三种可以选择分别是RJ71C24、RJ71C24-R2、RJ71C24-R4。RJ71C24系列支持MC协议通信、通信协议通信、无顺序协议通信、双向协议通信全、MODBUS通信。当我帮助他们选型之后,他们在使用的时候,又是一头雾水。那么今天我抽一些时间讲解一RJ71...

weixin_39878549的博客 9272

p4 language learning :Part 3(学习笔记)

p4 language learning :Part 3(学习笔记) 3.1 Name resolution 引入名称空间的P4对象是以分层方式组织的。有一个顶层未命名的名称空间,其中包含所有顶层声明。 前缀有点的标识符始终在顶级名称空间中解析。 const bit<32> x = 2; control c() { int<32> x = 0; apply { x = x + (int<32>).x; // x is the int<32

maxkd的博客 541

Hypermesh2021实战:塑料圆盘结构化网格划分全流程(附避坑指南)

本文详细介绍了使用Hypermesh2021进行塑料圆盘结构化网格划分的全流程操作,包括几何预处理、网格生成策略及质量验证。特别针对工程实践中常见的12个典型问题提供解决方案,帮助用户提升CAE仿真分析的精度和效率。

weixin_29294597的博客 319

手把手教你为ArduPilot添加自定义飞行模式:以自动巡检航线为例

本文详细介绍了如何为开源飞控ArduPilot添加自定义飞行模式,并以自动巡检航线为例,提供了从状态机设计、代码实现到地面站集成的完整开发指南。通过七步法手把手教学,帮助开发者深入理解飞控核心逻辑,实现无人机自主执行复杂巡检任务,满足行业应用定制需求。

weixin_29306875的博客 137

雅思口语Part 2万能故事串联法:311字符框架应对90%题目

在语言学习与标准化考试准备中,高效备考策略是提升表现的关键。其核心原理在于通过结构化框架降低认知负荷,实现知识的灵活迁移与应用。这种方法的技术价值在于将复杂任务分解为可管理的模块,特别适合时间有限或基础薄弱的学习者快速建立应答体系。以雅思口语Part 2为例,题目常围绕人物、地点、事件等维度展开,通过构建一个包含多元要素的核心故事框架,考生可以动态调整叙述重点来适配不同题目要求。这种万能故事串联法基于311字符的标准化骨架,结合题目适配技巧与语言填充方案,能覆盖本季度90%以上的高频题型,帮助考生在考场中实

weixin_30800807的博客 446

【Power Compiler手册】13.UPF多电压设计实现(2)

在这个场景中,在约束传播期间,工具会比较BLOCK中的原子电源域与TOP设计中的原子电源域,并且确认所有属性都匹配。因此,域合并成功,工具会丢弃来自BLOCK的域。在这个场景中,在约束传播期间,工具会比较BLOCK中的原子电源域与TOP设计中的非原子电源域,发现电源域不匹配。在这个场景中,在约束传播期间,工具会比较BLOCK中的非原子电源域与TOP设计中的原子电源域,发现电源域不匹配。在这个场景中,在约束传播期间,工具会比较BLOCK中的原子电源域与TOP设计中的原子电源域,发现它们的一些属性不匹配。

QRBQ 751

Physics of Language Models学习小结

对这部分进行概括的话就如摘要所说设计了受控实验来研究生成式语言模型(如 GPT)如何学习上下文自由语法(CFG)。上下文无关文法(Context-Free Grammar,CFG)是一种用于描述语言结构的形式语法,广泛应用于自然语言处理、编译原理等领域。CFG由一组产生式规则组成,这些规则定义了语言的语法结构。在CFG中,每个产生式规则具有形式“A → α”,其中A是非终结符,α是终结符或非终结符的序列1。

wanxueyao的博客 2082

RT-DETR升级:TGRS2026 CKConv结合RepC3 | 方向特征与跨阶段融合协同,小目标漏检率大幅下降

小目标鲁棒性提升:CKConv方向选择性抑制背景噪声,RepC3跨阶段传递保留深层微弱热信号,显著改善低对比度、低信噪比场景下的检测精度。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 155

黑猫带你学eMMC协议第4篇:eMMC概述

1 前言 声明: 本文依据eMMC JEDEC5.1协议及个人工作经验整理而成,如有错误请留言。 文章为个人辛苦整理,付费内容,禁止私自转载。 本文大约3000字,从emmc的内部结构框架、供电、总线、寄存器等各方面进行框架性的介绍,本章节内容不需要深入研究,读完本篇文章,只要能对emmc有个框架下的了解,就可以了。 2 内部结构框架 由图可以看出,emmc内部由两块组成:控制器 + 存储介质。emmc内部存储介质绝大部分为nand flash。 众所周知,我们需要存储数据到nand flash中,并

黑猫奥利奥的博客 3341

QA Systems and Deep Learning Technologies – Part 2

Introduction This is the second article in a two part series about QA Systems and Deep Learning. You can read part 1 here. Deep Learning is a subfield of machine learning, and ...

weixin_34061555的博客 899

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

站在BERT肩膀上的NLP新秀们(PART III)

MT-DNN from Microsoft MT-DNN-2 from Microsoft GPT-2 from OpenAI VideoBERT from Google

Kaiyuan_sjtu的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【AI大模型应用开发】【基础】1.大模型知识学习图谱

本文系统介绍了大语言模型(LLM)的理论与实践应用知识体系。主要内容包括:1)LLM基础概念及评估指标;2)主流模型架构(Encoder/Decoder-only等)及代表模型(BERT、GPT等);3)开源模型ChatGLM、LLaMA等的技术特点;4)大模型应用方法,包括传统微调、Prompt工程及参数高效微调技术(Adapter/LoRA等);5)LangChain框架应用;6)多个实战案例:Zero-shot文本处理、知识库问答机器人搭建、GPT2聊天机器人开发等。文章通过理论结合实践的方式,帮助开

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 269

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

InternVLA‑A1.5:统一理解、潜在预见与动作,实现组合泛化

前面已经知道,一段视频经过 时空块嵌入(Tubelet Embedding) 之后,会从原始的视频帧转换成一个三维 时空 Token 网格(Spatio-temporal Token Grid)。例如 V-JEPA 中典型的输入:[16,224,224,3][16,224,224,3][16,224,224,3]经过大小为:2×16×162\times16\times162×16×16的三维 Patch Embedding 后,会得到:[8,14,14,de][8,14,14,d_e][8,14,14,de

u013250861的博客 179

从BERT到GPT-2:Texar-PyTorch预训练模型全解析与实战案例

在当今的自然语言处理领域,预训练模型已经成为推动技术发展的核心驱动力。Texar-PyTorch作为一个强大的机器学习工具包,为研究人员和开发者提供了从BERT到GPT-2等先进预训练模型的完整解决方案。本文将深入解析Texar-PyTorch中预训练模型的实现原理,并通过实战案例展示如何快速上手和应用这些强大的模型。 ## 🔍 Texar-PyTorch:预训练模型的瑞士军刀 Texar-

gitblog_01178的博客 847
上一篇: C++ Primer Plus笔记07
下一篇: p4 language learning :Part 2(学习笔记)
MAXKD
博客等级 码龄7年 12粉丝 25原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值