use logos::Logos;
#[derive(Logos, Debug, PartialEq, Clone)]
#[logos(skip r"[ \t\n\f]+")]
#[logos(skip r"//.*")]
pub enum Token<'a> {
#[token("HOST")]
Host,
#[token("FLOW")]
Flow,
#[token("IP")]
Ip,
#[token("MAC")]
Mac,
#[token("COMPILE")]
Compile,
#[token("LOOP")]
Loop,
#[token("TCP")]
Tcp,
#[token("UDP")]
Udp,
#[token("SYN")]
Syn,
#[token("ACK")]
Ack,
#[token("FIN")]
Fin,
#[token("RST")]
Rst,
#[token("PSH")]
Psh,
#[token("URG")]
Urg,
#[token("ECE")]
Ece,
#[token("CWR")]
Cwr,
#[token("SRCPORT")]
SrcPort,
#[token("DSTPORT")]
DstPort,
#[token("SEQ")]
Seq,
#[token("ACKNUM")]
AckNum,
#[token("WIN")]
Win,
#[token("PAYLOAD")]
Payload,
#[token("HEXPAYLOAD")]
HexPayload,
#[token("WAIT")]
Wait,
#[token("VLAN")]
Vlan,
#[token("DSCP")]
Dscp,
#[token("ECN")]
Ecn,
#[token("TTL")]
Ttl,
#[token("FLOWLABEL")]
FlowLabel,
#[token("SNMP1")]
Snmp1,
#[token("SNMP2")]
Snmp2,
#[token("SNMP3")]
Snmp3,
#[token("TRAP")]
Trap,
#[token("GET")]
Get,
#[token("SET")]
Set,
#[token("RESPONSE")]
Response,
#[token("INFORM")]
Inform,
#[token("GETNEXT")]
GetNext,
#[token("GETBULK")]
GetBulk,
#[token("COMMUNITY")]
Community,
#[token("USER")]
User,
#[token("OID")]
Oid,
#[token("SYSUPTIME")]
SysUpTime,
#[token("VARBIND")]
VarBind,
#[token("NULLVAL")]
#[token("NULL")]
NullVal,
#[token("STRING")]
StringVal,
#[token("INT")]
IntVal,
#[token("TIMETICKS")]
TimeTicksVal,
#[token("IPVAL")]
IpVal,
#[token("OIDVAL")]
OidVal,
#[token("COUNTER32")]
Counter32Val,
#[token("GAUGE32")]
Gauge32Val,
#[token("COUNTER64")]
Counter64Val,
#[token("ENTERPRISE")]
Enterprise,
#[token("AGENTIP")]
AgentIp,
#[token("GENTRAP")]
GenTrap,
#[token("SPECTRAP")]
SpecTrap,
#[token("ENGINEID")]
EngineId,
#[token("ENGINEBOOTS")]
EngineBoots,
#[token("ENGINETIME")]
EngineTime,
#[token("CONTEXTNAME")]
ContextName,
#[token("AUTH")]
Auth,
#[token("PRIV")]
Priv,
#[token("MD5")]
Md5,
#[token("SHA")]
Sha,
#[token("SHA256")]
Sha256,
#[token("SHA384")]
Sha384,
#[token("SHA512")]
Sha512,
#[token("DES")]
Des,
#[token("AES")]
Aes,
#[token("NONREPEATERS")]
NonRepeaters,
#[token("MAXREPETITIONS")]
MaxRepetitions,
#[token("REQID")]
ReqId,
#[token("PCP")]
Pcp,
#[token("DEI")]
Dei,
#[token("QINQ")]
Qinq,
#[token("INNER_VLAN")]
InnerVlan,
#[token("MPLS")]
Mpls,
#[token("EXP")]
#[token("TC")]
Exp,
#[token("BOS")]
Bos,
#[token("MPLS_TTL")]
MplsTtl,
#[token("SRCMAC")]
SrcMac,
#[token("DSTMAC")]
DstMac,
#[token("ETHERTYPE")]
EtherType,
#[token("IPID")]
IpId,
#[token("DF")]
Df,
#[token("MF")]
Mf,
#[token("FRAGOFFSET")]
FragOffset,
#[token("TRANSPORT")]
Transport,
#[token("WINDOW")]
Window,
#[token("URGENT")]
Urgent,
#[token("MSS")]
Mss,
#[token("WSCALE")]
Wscale,
#[token("SACK_PERM")]
#[token("SACKPERM")]
SackPerm,
#[token("TSVAL")]
Tsval,
#[token("TSECR")]
Tsecr,
#[token("VTAG")]
Vtag,
#[token("STREAM")]
Stream,
#[token("SSN")]
Ssn,
#[token("PPID")]
Ppid,
#[token("CHUNK")]
Chunk,
#[token("ARP")]
Arp,
#[token("LLDP")]
Lldp,
#[token("STP")]
Stp,
#[token("LACP")]
Lacp,
#[token("EAPOL")]
Eapol,
#[token("ICMP")]
Icmp,
#[token("NDP")]
Ndp,
#[token("IGMP")]
Igmp,
#[token("MLD")]
Mld,
#[token("GRE")]
Gre,
#[token("VXLAN")]
Vxlan,
#[token("GENEVE")]
Geneve,
#[token("IPSEC")]
Ipsec,
#[token("ESP")]
Esp,
#[token("AH")]
Ah,
#[token("IKEV2")]
Ikev2,
#[token("WIREGUARD")]
Wireguard,
#[token("OSPF")]
Ospf,
#[token("BGP")]
Bgp,
#[token("RIP")]
Rip,
#[token("VRRP")]
Vrrp,
#[token("HSRP")]
Hsrp,
#[token("PIM")]
Pim,
#[token("BFD")]
Bfd,
#[token("OPENFLOW")]
Openflow,
#[token("SCTP")]
Sctp,
#[token("REQUEST")]
Request,
#[token("REPLY")]
Reply,
#[token("GRATUITOUS")]
Gratuitous,
#[token("GARP")]
Garp,
#[token("SPA")]
Spa,
#[token("THA")]
Tha,
#[token("TPA")]
Tpa,
#[token("SENDERMAC")]
SenderMac,
#[token("TARGETMAC")]
TargetMac,
#[token("SENDERIP")]
SenderIp,
#[token("TARGETIP")]
TargetIp,
#[token("CHASSIS_ID")]
ChassisId,
#[token("PORT_ID")]
PortId,
#[token("SYSNAME")]
SysName,
#[token("SYSDESC")]
SysDesc,
#[token("ROOT_ID")]
RootId,
#[token("BRIDGE_ID")]
BridgeId,
#[token("COST")]
Cost,
#[token("MAX_AGE")]
MaxAge,
#[token("HELLO_TIME")]
HelloTime,
#[token("FORWARD_DELAY")]
ForwardDelay,
#[token("RSTP")]
Rstp,
#[token("FLAGS")]
Flags,
#[token("ACTOR_SYS")]
ActorSys,
#[token("ACTOR_KEY")]
ActorKey,
#[token("ACTOR_PORT")]
ActorPort,
#[token("PARTNER_SYS")]
PartnerSys,
#[token("PARTNER_KEY")]
PartnerKey,
#[token("PARTNER_PORT")]
PartnerPort,
#[token("ACTOR_STATE")]
ActorState,
#[token("PARTNER_STATE")]
PartnerState,
#[token("VERSION")]
Version,
#[token("TYPE")]
Type,
#[token("EAP_PACKET")]
EapPacket,
#[token("START")]
Start,
#[token("LOGOFF")]
Logoff,
#[token("KEY")]
Key,
#[token("EAP_CODE")]
EapCode,
#[token("EAP_ID")]
EapId,
#[token("EAP_METHOD")]
EapMethod,
#[token("IDENTITY")]
Identity,
#[token("LABEL")]
Label,
#[token("ECHO_REQUEST")]
EchoRequest,
#[token("ECHO_REPLY")]
EchoReply,
#[token("DEST_UNREACH")]
DestUnreach,
#[token("TIME_EXCEEDED")]
TimeExceeded,
#[token("REDIRECT")]
Redirect,
#[token("CODE")]
Code,
#[token("ID")]
Id,
#[token("GATEWAY")]
Gateway,
#[token("ROUTER_SOLICIT")]
RouterSolicit,
#[token("ROUTER_ADVERT")]
RouterAdvert,
#[token("NEIGHBOR_SOLICIT")]
NeighborSolicit,
#[token("NEIGHBOR_ADVERT")]
NeighborAdvert,
#[token("TARGET")]
Target,
#[token("SLLA")]
Slla,
#[token("TLLA")]
Tlla,
#[token("ROUTER_LIFETIME")]
RouterLifetime,
#[token("QUERY")]
Query,
#[token("REPORT")]
Report,
#[token("LEAVE")]
Leave,
#[token("GROUP")]
Group,
#[token("MAX_RESP")]
MaxResp,
#[token("V1")]
V1,
#[token("V2")]
V2,
#[token("V3")]
V3,
#[token("DONE")]
Done,
#[token("MULTICAST_ADDR")]
MulticastAddr,
#[token("MAX_RESP_DELAY")]
MaxRespDelay,
#[token("GRE_KEY")]
GreKey,
#[token("GRE_SEQ")]
GreSeq,
#[token("GRE_PROTO")]
GreProto,
#[token("CHECKSUM")]
Checksum,
#[token("VNI")]
Vni,
#[token("VNID")]
Vnid,
#[token("OPT_CLASS")]
OptClass,
#[token("OPT_TYPE")]
OptType,
#[token("PROTOCOL_TYPE")]
ProtocolType,
#[token("SPI")]
Spi,
#[token("IV")]
Iv,
#[token("ICV")]
Icv,
#[token("NEXT_HEADER")]
NextHeader,
#[token("INITIATOR_SPI")]
InitiatorSpi,
#[token("RESPONDER_SPI")]
ResponderSpi,
#[token("EXCHANGE")]
Exchange,
#[token("SA_INIT")]
SaInit,
#[token("CREATE_CHILD_SA")]
CreateChildSa,
#[token("INFORMATIONAL")]
Informational,
#[token("MSGID")]
MsgId,
#[token("NEXT_PAYLOAD")]
NextPayload,
#[token("INITIATION")]
Initiation,
#[token("COOKIE")]
Cookie,
#[token("DATA")]
Data,
#[token("SENDER")]
Sender,
#[token("RECEIVER")]
Receiver,
#[token("COUNTER")]
Counter,
#[token("HELLO")]
Hello,
#[token("DBD")]
Dbd,
#[token("LSR")]
Lsr,
#[token("LSU")]
Lsu,
#[token("LSACK")]
LsAck,
#[token("ROUTER_ID")]
RouterId,
#[token("AREA_ID")]
AreaId,
#[token("HELLO_INTERVAL")]
HelloInterval,
#[token("DEAD_INTERVAL")]
DeadInterval,
#[token("PRIORITY")]
Priority,
#[token("OPEN")]
Open,
#[token("UPDATE")]
Update,
#[token("NOTIFICATION")]
Notification,
#[token("KEEPALIVE")]
Keepalive,
#[token("ASN")]
Asn,
#[token("HOLDTIME")]
HoldTime,
#[token("BGPID")]
BgpId,
#[token("PREFIX")]
Prefix,
#[token("NLRI")]
Nlri,
#[token("NEXTHOP")]
NextHop,
#[token("METRIC")]
Metric,
#[token("TAG")]
Tag,
#[token("VRID")]
Vrid,
#[token("ADV_INT")]
AdvInt,
#[token("VIP")]
Vip,
#[token("HELLOTIME")]
HelloTimeHsrp,
#[token("STATE")]
State,
#[token("JOIN_PRUNE")]
JoinPrune,
#[token("REGISTER")]
Register,
#[token("SOURCE")]
Source,
#[token("RP")]
Rp,
#[token("DR_PRIORITY")]
DrPriority,
#[token("DIAG")]
Diag,
#[token("MY_DISC")]
MyDisc,
#[token("YOUR_DISC")]
YourDisc,
#[token("MIN_TX")]
MinTx,
#[token("MIN_RX")]
MinRx,
#[token("MULT")]
Mult,
#[token("FEATURES_REQ")]
FeaturesReq,
#[token("FEATURES_REPLY")]
FeaturesReply,
#[token("PACKET_IN")]
PacketIn,
#[token("PACKET_OUT")]
PacketOut,
#[token("FLOW_MOD")]
FlowMod,
#[token("ECHO_REQ")]
EchoReq,
#[token("XID")]
Xid,
#[token("DPID")]
Dpid,
#[token("TABLE_ID")]
TableId,
#[token("INIT")]
Init,
#[token("INIT_ACK")]
InitAck,
#[token("SACK")]
Sack,
#[token("HEARTBEAT")]
Heartbeat,
#[token("HEARTBEAT_ACK")]
HeartbeatAck,
#[token("ABORT")]
Abort,
#[token("SHUTDOWN")]
Shutdown,
#[token("COOKIE_ECHO")]
CookieEcho,
#[token("COOKIE_ACK")]
CookieAck,
#[token("TSN")]
Tsn,
#[token("DNS")]
Dns,
#[token("MDNS")]
Mdns,
#[token("DHCP")]
Dhcp,
#[token("NTP")]
Ntp,
#[token("PTP")]
Ptp,
#[token("RADIUS")]
Radius,
#[token("TACACS")]
Tacacs,
#[token("SYSLOG")]
Syslog,
#[token("NETFLOW")]
Netflow,
#[token("IPFIX")]
Ipfix,
#[token("SFLOW")]
Sflow,
#[token("TFTP")]
Tftp,
#[token("FTP")]
Ftp,
#[token("SSH")]
Ssh,
#[token("TELNET")]
Telnet,
#[token("HTTP")]
Http,
#[token("HTTP2")]
Http2,
#[token("GRPC")]
Grpc,
#[token("WEBSOCKET")]
Websocket,
#[token("TLS")]
Tls,
#[token("QUIC")]
Quic,
#[token("STUN")]
Stun,
#[token("SIP")]
Sip,
#[token("RTP")]
Rtp,
#[token("RTSP")]
Rtsp,
#[token("SMTP")]
Smtp,
#[token("IMAP")]
Imap,
#[token("POP3")]
Pop3,
#[token("KERBEROS")]
Kerberos,
#[token("LDAP")]
Ldap,
#[token("SMB")]
Smb,
#[token("NFS")]
Nfs,
#[token("REDIS")]
Redis,
#[token("MEMCACHED")]
Memcached,
#[token("MYSQL")]
Mysql,
#[token("POSTGRES")]
Postgres,
#[token("MQTT")]
Mqtt,
#[token("COAP")]
Coap,
#[token("AMQP")]
Amqp,
#[token("SSDP")]
Ssdp,
#[token("WHOIS")]
Whois,
#[token("MODBUS")]
Modbus,
#[token("BACNET")]
Bacnet,
#[token("DNP3")]
Dnp3,
#[token("S7COMM")]
S7comm,
#[token("ETHERNETIP")]
Ethernetip,
#[token("OPCUA")]
Opcua,
#[token("TXID")]
Txid,
#[token("QNAME")]
Qname,
#[token("QTYPE")]
Qtype,
#[token("RDATA")]
Rdata,
#[token("RCODE")]
Rcode,
#[token("ANS_TTL")]
AnsTtl,
#[token("DISCOVER")]
Discover,
#[token("SOLICIT")]
Solicit,
#[token("OFFER")]
Offer,
#[token("ADVERTISE")]
Advertise,
#[token("RELEASE")]
Release,
#[token("CIADDR")]
Ciaddr,
#[token("YIADDR")]
Yiaddr,
#[token("SIADDR")]
Siaddr,
#[token("CHADDR")]
Chaddr,
#[token("HOSTNAME")]
Hostname,
#[token("DNS_SERVER")]
DnsServer,
#[token("ROUTER")]
Router,
#[token("SUBNET_MASK")]
SubnetMask,
#[token("LEASE_TIME")]
LeaseTime,
#[token("LI")]
Li,
#[token("VN")]
Vn,
#[token("MODE")]
Mode,
#[token("STRATUM")]
Stratum,
#[token("POLL")]
Poll,
#[token("PRECISION")]
Precision,
#[token("REFID")]
RefId,
#[token("TX_TIMESTAMP")]
TxTimestamp,
#[token("MSG_TYPE")]
MsgType,
#[token("SYNC")]
Sync,
#[token("DELAY_REQ")]
DelayReq,
#[token("FOLLOW_UP")]
FollowUp,
#[token("DELAY_RESP")]
DelayResp,
#[token("ANNOUNCE")]
Announce,
#[token("DOMAIN")]
Domain,
#[token("SEQ_ID")]
SeqId,
#[token("CLOCK_ID")]
ClockId,
#[token("ACCESS_REQUEST")]
AccessRequest,
#[token("ACCESS_ACCEPT")]
AccessAccept,
#[token("ACCESS_REJECT")]
AccessReject,
#[token("ACCESS_CHALLENGE")]
AccessChallenge,
#[token("ACCOUNTING_REQUEST")]
AccountingRequest,
#[token("ACCOUNTING_RESPONSE")]
AccountingResponse,
#[token("NAS_IP")]
NasIp,
#[token("SERVICE_TYPE")]
ServiceType,
#[token("FRAMED_IP")]
FramedIp,
#[token("AUTHEN")]
Authen,
#[token("AUTHOR")]
Author,
#[token("ACCT")]
Acct,
#[token("SESSION_ID")]
SessionId,
#[token("FACILITY")]
Facility,
#[token("SEVERITY")]
Severity,
#[token("PRI")]
Pri,
#[token("APP")]
App,
#[token("PROCID")]
Procid,
#[token("MSG")]
Msg,
#[token("SRCIP")]
SrcIp,
#[token("DSTIP")]
DstIp,
#[token("PROTO")]
Proto,
#[token("PACKETS")]
Packets,
#[token("OCTETS")]
Octets,
#[token("DOMAIN_ID")]
DomainId,
#[token("AGENT_IP")]
AgentIpSflow,
#[token("SUB_AGENT_ID")]
SubAgentId,
#[token("UPTIME")]
Uptime,
#[token("SAMPLES")]
Samples,
#[token("RRQ")]
Rrq,
#[token("WRQ")]
Wrq,
#[token("FILENAME")]
Filename,
#[token("BLOCK")]
Block,
#[token("ERRCODE")]
ErrCode,
#[token("ERRMSG")]
ErrMsg,
#[token("CMD")]
Cmd,
#[token("ARG")]
Arg,
#[token("BANNER")]
Banner,
#[token("KEXINIT")]
KexInit,
#[token("NEWKEYS")]
NewKeys,
#[token("MSG_CODE")]
MsgCode,
#[token("WILL")]
Will,
#[token("WONT")]
Wont,
#[token("DO")]
DoCmd,
#[token("DONT")]
Dont,
#[token("OPTION")]
Option,
#[token("POST")]
Post,
#[token("PUT")]
Put,
#[token("DELETE")]
Delete,
#[token("HEAD")]
Head,
#[token("OPTIONS")]
Options,
#[token("PATCH")]
Patch,
#[token("URI")]
Uri,
#[token("HOST_HDR")]
HostHdr,
#[token("USER_AGENT")]
UserAgent,
#[token("CONTENT_TYPE")]
ContentType,
#[token("STATUS")]
Status,
#[token("REASON")]
Reason,
#[token("HEADER")]
Header,
#[token("BODY")]
Body,
#[token("PREFACE")]
Preface,
#[token("SETTINGS")]
Settings,
#[token("HEADERS")]
Headers,
#[token("WINDOW_UPDATE")]
WindowUpdate,
#[token("PING")]
Ping,
#[token("GOAWAY")]
Goaway,
#[token("STREAM_ID")]
StreamId,
#[token("SERVICE")]
Service,
#[token("METHOD")]
Method,
#[token("GRPC_STATUS")]
GrpcStatus,
#[token("OPCODE")]
Opcode,
#[token("TEXT")]
Text,
#[token("BINARY")]
Binary,
#[token("PONG")]
Pong,
#[token("CLOSE")]
Close,
#[token("FIN_BIT")]
FinBit,
#[token("MASK_KEY")]
MaskKey,
#[token("CLIENT_HELLO")]
ClientHello,
#[token("SERVER_HELLO")]
ServerHello,
#[token("CERTIFICATE")]
Certificate,
#[token("FINISHED")]
Finished,
#[token("APP_DATA")]
AppData,
#[token("ALERT")]
Alert,
#[token("RECORD_VERSION")]
RecordVersion,
#[token("HANDSHAKE_VERSION")]
HandshakeVersion,
#[token("SNI")]
Sni,
#[token("CIPHERSUITE")]
Ciphersuite,
#[token("ALPN")]
Alpn,
#[token("INITIAL")]
Initial,
#[token("ZERO_RTT")]
ZeroRtt,
#[token("HANDSHAKE")]
Handshake,
#[token("RETRY")]
Retry,
#[token("SHORT")]
Short,
#[token("DCID")]
Dcid,
#[token("SCID")]
Scid,
#[token("TOKEN")]
Token,
#[token("PKT_NUM")]
PktNum,
#[token("BINDING_REQUEST")]
BindingRequest,
#[token("BINDING_RESPONSE")]
BindingResponse,
#[token("BINDING_ERROR")]
BindingError,
#[token("XOR_MAPPED_ADDR")]
XorMappedAddr,
#[token("SOFTWARE")]
Software,
#[token("INVITE")]
Invite,
#[token("BYE")]
Bye,
#[token("CANCEL")]
Cancel,
#[token("FROM")]
From,
#[token("TO")]
To,
#[token("CALL_ID")]
CallId,
#[token("CSEQ")]
Cseq,
#[token("VIA")]
Via,
#[token("CONTACT")]
Contact,
#[token("PT")]
Pt,
#[token("TIMESTAMP")]
Timestamp,
#[token("SSRC")]
Ssrc,
#[token("MARKER")]
Marker,
#[token("DESCRIBE")]
Describe,
#[token("SETUP")]
Setup,
#[token("PLAY")]
Play,
#[token("TEARDOWN")]
Teardown,
#[token("TRANSPORT_HDR")]
TransportHdr,
#[token("SESSION")]
Session,
#[token("EHLO")]
Ehlo,
#[token("HELO")]
Helo,
#[token("MAIL_FROM")]
MailFrom,
#[token("RCPT_TO")]
RcptTo,
#[token("QUIT")]
Quit,
#[token("PARAM")]
Param,
#[token("OK")]
Ok,
#[token("ERR")]
Err,
#[token("AS_REQ")]
AsReq,
#[token("AS_REP")]
AsRep,
#[token("TGS_REQ")]
TgsReq,
#[token("TGS_REP")]
TgsRep,
#[token("KRB_ERROR")]
KrbError,
#[token("REALM")]
Realm,
#[token("CNAME")]
Cname,
#[token("SNAME")]
Sname,
#[token("ETYPE")]
Etype,
#[token("BIND_REQ")]
BindReq,
#[token("BIND_RES")]
BindRes,
#[token("SEARCH_REQ")]
SearchReq,
#[token("SEARCH_ENTRY")]
SearchEntry,
#[token("SEARCH_DONE")]
SearchDone,
#[token("UNBIND_REQ")]
UnbindReq,
#[token("BASE_DN")]
BaseDn,
#[token("FILTER")]
Filter,
#[token("RESULT_CODE")]
ResultCode,
#[token("COMMAND")]
Command,
#[token("NEGOTIATE")]
Negotiate,
#[token("SESSION_SETUP")]
SessionSetup,
#[token("TREE_CONNECT")]
TreeConnect,
#[token("CREATE")]
Create,
#[token("TREE_DISCONNECT")]
TreeDisconnect,
#[token("TREE_ID")]
TreeId,
#[token("SHARE")]
Share,
#[token("VERS")]
Vers,
#[token("PROC")]
Proc,
#[token("PATH")]
Path,
#[token("COMPOUND")]
Compound,
#[token("ARGS")]
Args,
#[token("REPLY_TYPE")]
ReplyType,
#[token("VALUE")]
Value,
#[token("EXPTIME")]
Exptime,
#[token("OPAQUE")]
Opaque,
#[token("CAS")]
Cas,
#[token("GREETING")]
Greeting,
#[token("LOGIN")]
Login,
#[token("SQL")]
Sql,
#[token("EOF")]
Eof,
#[token("SERVER_VERSION")]
ServerVersion,
#[token("DB")]
Db,
#[token("STARTUP")]
Startup,
#[token("READY_FOR_QUERY")]
ReadyForQuery,
#[token("COMMAND_COMPLETE")]
CommandComplete,
#[token("ERROR_RESPONSE")]
ErrorResponse,
#[token("AUTH_OK")]
AuthOk,
#[token("CONNECT")]
Connect,
#[token("CONNACK")]
Connack,
#[token("PUBLISH")]
Publish,
#[token("PUBACK")]
Puback,
#[token("SUBSCRIBE")]
Subscribe,
#[token("SUBACK")]
Suback,
#[token("PINGREQ")]
Pingreq,
#[token("PINGRESP")]
Pingresp,
#[token("DISCONNECT")]
Disconnect,
#[token("CLIENT_ID")]
ClientId,
#[token("TOPIC")]
Topic,
#[token("QOS")]
Qos,
#[token("RETAIN")]
Retain,
#[token("PKT_ID")]
PktId,
#[token("RETURN_CODE")]
ReturnCode,
#[token("CON")]
Con,
#[token("NON")]
Non,
#[token("CHANGED")]
Changed,
#[token("CREATED")]
Created,
#[token("NOT_FOUND")]
NotFound,
#[token("URI_PATH")]
UriPath,
#[token("CONTENT_FORMAT")]
ContentFormat,
#[token("PROTOCOL_HEADER")]
ProtocolHeader,
#[token("CONNECTION_START")]
ConnectionStart,
#[token("CHANNEL_OPEN")]
ChannelOpen,
#[token("BASIC_PUBLISH")]
BasicPublish,
#[token("BASIC_DELIVER")]
BasicDeliver,
#[token("CHANNEL")]
Channel,
#[token("ROUTING_KEY")]
RoutingKey,
#[token("MSEARCH")]
Msearch,
#[token("NOTIFY")]
Notify,
#[token("MAN")]
Man,
#[token("MX")]
Mx,
#[token("ST")]
St,
#[token("NT")]
Nt,
#[token("NTS")]
Nts,
#[token("USN")]
Usn,
#[token("LOCATION")]
Location,
#[token("REGISTRAR")]
Registrar,
#[token("PROTO_ID")]
ProtoId,
#[token("UNITID")]
UnitId,
#[token("FUNC")]
Func,
#[token("READ_COILS")]
ReadCoils,
#[token("READ_DISCRETE_INPUTS")]
ReadDiscreteInputs,
#[token("READ_HOLDING_REGISTERS")]
ReadHoldingRegisters,
#[token("READ_INPUT_REGISTERS")]
ReadInputRegisters,
#[token("WRITE_SINGLE_COIL")]
WriteSingleCoil,
#[token("WRITE_SINGLE_REGISTER")]
WriteSingleRegister,
#[token("WRITE_MULTIPLE_REGISTERS")]
WriteMultipleRegisters,
#[token("ADDR")]
Addr,
#[token("COUNT")]
Count,
#[token("IS_RESPONSE")]
IsResponse,
#[token("WHO_IS")]
WhoIs,
#[token("I_AM")]
IAm,
#[token("READ_PROPERTY")]
ReadProperty,
#[token("WRITE_PROPERTY")]
WriteProperty,
#[token("INVOKE_ID")]
InvokeId,
#[token("OBJECT_TYPE")]
ObjectType,
#[token("OBJECT_INSTANCE")]
ObjectInstance,
#[token("PROPERTY_ID")]
PropertyId,
#[token("CONFIRM")]
Confirm,
#[token("SELECT")]
Select,
#[token("OPERATE")]
Operate,
#[token("DIRECT_OPERATE")]
DirectOperate,
#[token("UNSOLICITED_RESPONSE")]
UnsolicitedResponse,
#[token("VARIATION")]
Variation,
#[token("CRC")]
Crc,
#[token("SRC")]
Src,
#[token("DST")]
Dst,
#[token("ROSCTR")]
Rosctr,
#[token("PDU_REF")]
PduRef,
#[token("SETUP_COMM")]
SetupComm,
#[token("READ_VAR")]
ReadVar,
#[token("WRITE_VAR")]
WriteVar,
#[token("PLC_CONTROL")]
PlcControl,
#[token("AREA")]
Area,
#[token("DB_NUM")]
DbNum,
#[token("OFFSET")]
Offset,
#[token("LIST_SERVICES")]
ListServices,
#[token("LIST_IDENTITY")]
ListIdentity,
#[token("LIST_INTERFACES")]
ListInterfaces,
#[token("REGISTER_SESSION")]
RegisterSession,
#[token("UNREGISTER_SESSION")]
UnregisterSession,
#[token("SEND_RR_DATA")]
SendRrData,
#[token("SEND_UNIT_DATA")]
SendUnitData,
#[token("SESSION_HANDLE")]
SessionHandle,
#[token("CONTEXT")]
ContextVal,
#[token("CIP_SERVICE")]
CipService,
#[token("CIP_CLASS")]
CipClass,
#[token("CIP_INSTANCE")]
CipInstance,
#[token("CIP_ATTR")]
CipAttr,
#[token("CHUNK_TYPE")]
ChunkType,
#[token("SECURE_CHANNEL_ID")]
SecureChannelId,
#[token("TOKEN_ID")]
TokenId,
#[token("SEQ_NUM")]
SeqNum,
#[token("ENDPOINT_URL")]
EndpointUrl,
#[token("NODE_ID")]
NodeId,
#[token("->")]
RightArrow,
#[token("<-")]
LeftArrow,
#[token("{")]
LBrace,
#[token("}")]
RBrace,
#[token("(")]
LParen,
#[token(")")]
RParen,
#[token(",")]
Comma,
#[token("ns", priority = 2)]
Ns,
#[token("us", priority = 2)]
Us,
#[token("ms", priority = 2)]
Ms,
#[token("s", priority = 2)]
Sec,
#[token("m", priority = 2)]
Min,
#[regex("[a-zA-Z_][a-zA-Z0-9_]*", priority = 1)]
Ident(&'a str),
#[regex(r#""([^"\\]|\\.)*""#)]
StringLit(&'a str),
#[regex(r"[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+", priority = 5)]
#[regex(r"::[0-9a-fA-F:.]*|[0-9a-fA-F]{1,4}(:[0-9a-fA-F:.]*)+", priority = 2)]
IpAddress(&'a str),
#[regex(r"([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}", priority = 6)]
MacAddress(&'a str),
#[regex(r"\.?[0-9]+(\.[0-9]+)*", priority = 3)]
OidStr(&'a str),
#[regex(r"-?[0-9]+|0[xX][0-9a-fA-F]+", priority = 4)]
Number(&'a str),
}
pub fn lex<'a>(
input: &'a str,
) -> Result<alloc::vec::Vec<(Token<'a>, std::ops::Range<usize>)>, crate::error::CompilerError> {
let mut lexer = Token::lexer(input);
let mut tokens = alloc::vec::Vec::new();
while let Some(res) = lexer.next() {
match res {
Ok(token) => tokens.push((token, lexer.span())),
Err(_) => {
return Err(crate::error::CompilerError::LexError {
src: input.to_string(),
span: (lexer.span().start, lexer.span().end - lexer.span().start),
});
}
}
}
Ok(tokens)
}
#[cfg(test)]
mod tests;