解析是指将工件分解为其构成元素并捕获这些元素之间的关系。此标记不是关于自托管Parse平台(使用[parse-platform]标记)或解析特定编程语言中的错误的问题(而是使用相应的语言标记)。
PHP 解析错误:语法错误,意外的 T_STRING,期望 T_FUNCTION
我的 PHP 代码中出现此错误: PHP 解析错误:语法错误,意外的 T_STRING,第 54 行 C:\Inetpub\wwwroot\webroot\www.novotempo.org.br\lib\Twitter.php 中期望 T_FUNCTION
我正在尝试使用Go编程语言解析EPUB元数据,我当前解析的XML非常简单: 我正在尝试使用Go编程语言解析EPUB元数据,我当前解析的XML非常简单: <?xml version="1.0" encoding="UTF-8"?> <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> <rootfiles> <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/> </rootfiles> </container> 我想要属性 full-path 和 media-type,Go 代码是: package main import ( "fmt" "encoding/xml" ) type RootFile struct { FullPath string `xml:"full-path,attr"` MediaType string `xml:"media-type,attr"` } func main() { xmlData := ` <?xml version="1.0" encoding="UTF-8"?> <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> <rootfiles> <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/> </rootfiles> </container> ` var rootFile RootFile xml.Unmarshal([]byte(xmlData), &rootFile) fmt.Println(rootFile) } 但我得到一个空结果: { } 我的代码有什么问题? 我不相信 go 对这里使用的 container 标签有开箱即用的支持,所以我相信你只是因为没有完整地解析 XML 而受苦。 这些类型将是一个完整的解析: type Container struct { Version string `xml:"version,attr"` Xmlns string `xml:"xmlns,attr"` RootFiles RootFiles `xml:"rootfiles"` } type RootFiles struct { Rootfile RootFile `xml:"rootfile"` } type RootFile struct { FullPath string `xml:"full-path,attr"` MediaType string `xml:"media-type,attr"` } 但是您无需声明您不感兴趣的字段,例如 version 和 xmlns。尽管如此,您仍然需要表达 xml 的整个树结构。这是完整的工作示例: package main import ( "encoding/xml" "fmt" ) type Container struct { Version string `xml:"version,attr"` Xmlns string `xml:"xmlns,attr"` RootFiles RootFiles `xml:"rootfiles"` } type RootFiles struct { RootFile RootFile `xml:"rootfile"` } type RootFile struct { FullPath string `xml:"full-path,attr"` MediaType string `xml:"media-type,attr"` } func main() { xmlData := ` <?xml version="1.0" encoding="UTF-8"?> <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> <rootfiles> <rootfile full-path="OEBPS/content.opf" media-type="application/oebps-package+xml"/> </rootfiles> </container> ` var rootFile Container err := xml.Unmarshal([]byte(xmlData), &rootFile) if err != nil { fmt.Printf("Something went wrong: %v", err) } fmt.Printf("RootFile->full-path %v\nRootFile->media-type %v\n", rootFile.RootFiles.RootFile.FullPath, rootFile.RootFiles.RootFile.MediaType) }
我在数据中间有以下行: 格子=“14.118460851 0.0 0.0 0.0 14.296182713 0.0 0.0 0.0 13.970592923”属性=物种:S:1:位置:R:3:力:R:3能量=-1558.14096522应力=&
我在数据中间有以下行: 格子=“14.118460851 0.0 0.0 0.0 14.296182713 0.0 0.0 0.0 13.970592923”属性=物种:S:1:位置:R:3:力:R:3能量=-1558.14096522应力=&
我有一些持续时间类型数据(单圈时间)为 pl.String,无法使用 strptime 进行转换,而常规日期时间按预期工作。 分钟(在 :) 之前和秒(在 . 之前)总是被填充...
假设我们要解析这样的表达式: 指数 := 多 Mul := 添加 {'*' 添加} 添加 := 文字 {'+' 文字} 文字 := 数字 | '('Exp')' 在 Haskell 中,我们可以编写一个解析器,例如 exp = mu...
假设我的程序需要 [ 0.562 , 1.4e-2 ] 形式的参数(即浮点数对),我应该如何在没有正则表达式的情况下在 C++ 中解析此输入?我知道有很多极端情况
是否可以编写像 Haskell 中一样干净的 Monadic 解析器?
假设我们要解析这样的表达式: 指数 := 多 Mul := 添加 {'*' 添加} 添加 := 文字 {'+' 文字} 文字 := 数字 | '('Exp')' 在 Haskell 中,我们可以编写一个解析器,例如 exp = mu...
如何解析 json 格式输出:kubectl get pods using jsonpath
如何解析 json 以从输出中检索字段 kubectl 获取 pods -o json 从命令行我需要从谷歌云集群获取系统生成的容器名称...这里...
我使用 WinSck 创建了一个 C++ 应用程序,它实现了一个小型(仅处理我需要的一些功能)http 服务器。这是用来使用http req与外界进行通信的...
使用 BeautifulSoup 将 HTML 中编码的 JSON 转换为 JSON
我知道这里也有人问过类似的问题,但我仍在努力寻找解决方案。我可以使用 Beautiful Soup 解析 bandintown 网站上的原始 HTML,但我的最终目标是
如果同一行中存在无效用户名,则用于解析 Telegram 用户名的正则表达式将停止解析有效用户名
下午好,我这里有一个问题,我有一个正则表达式,可以提取 Telegram 链接中的用户名,从简单的“@”开始到 username.t.me 链接 问题是如果我输入@a...
我有一个简单的 EBNF: ::= ::= int ( ) { } ::= 返回 ; ::= 我有一个简单的 EBNF: <program> ::= <function> <function> ::= int <id> ( ) { <statement> } <statement> ::= return <expr> ; <expr> ::= <int> 我正在编写纯 C 语言并针对 Linux(目前)。答案不必用 C 语言编写。 我有一个 Lexer,它只是索引源文件并创建 token 结构的链接列表。 token 仅携带 char* 和 size_t 以及引用下一个标记。这就是它的全部了。 struct Token { char *ndx; size_t length; struct Token *next; } Lexer仅用两个基本条件对源进行索引,遵循这两个基本条件来辨别 - 或区分 - 一个标记与另一个标记: 空格分隔标记 符号是记号 - ( ) [ ] { } ; ...等等 我开始使用的源文件如下所示: int main() { return 2; } 我正在尝试弄清楚如何从 EBNF 到与成员的 ProgramExpr - FunctionExpr 和 StatementExpr。由于我有代表源文件的标记,因此解析器需要解析这些标记 - 即发现它们是什么。根据产生式规则,解析器将构建一个抽象语法树(我也称之为ExpressionNode。) 如何从 EBNF 转到 Expression Node? 我想我会有一个类似的结构: struct ExprNode { enum ExprType { PROG, FUNC, IDNT, STMT, EXPR, INT_LIT } type; char *term; int pos; int line; struct ExprNode* left; struct ExprNode* right; }; 解析的程序顺序是什么?由于我的 EBNF 以 <program> 开头,我的第一个解析函数是在寻找 程序 - 即 <function> 吗?如果我们还没有 function,解析器是否会陷入寻找 函数? 当我问时,每个人都只是说“使用 ANTLR”。但我有一个问题,我想在开始使用别人的黑匣子之前了解如何解决它。 我读过 Nora Sandler 的文章,编写编译器。虽然一篇好文章,但似乎跳过了一些内容,我只是不明白。我还意识到我可能会混淆 Parser Generator 和 Parser Combinator。 附注- 有人推荐了龙书...它在我的必读清单上。 由于我的 EBNF 以 <program> 开头,这是我寻找程序的第一个解析函数 - 即 <function>? 是的,所以你可能有一个函数 look_for_a_program() 调用 look_for_a_function()。 如果我们还没有该函数,解析器是否会陷入寻找函数的过程? look_for_a_function()会更有趣。首先,它会期望关键字 int(即指向输入中文本“int”的 Token)。如果成功,它需要一个 <id>(指向输入中类似单词的文本的 Token)。依此类推,反映 EBNF 中 <function> 规则的结构。 (当它到达<statement>部分时,它不会寻找令牌,而是调用look_for_a_statement。)如果您可以成功识别规则末尾的右大括号,那么您可以创建一个 ExprNode 代表您刚刚识别的 <function>。 (处理错误是另一回事。) 这是一种特殊类型的解析器,称为“递归下降解析器”,您可以在网络上找到吨的帮助。 (非常粗略地说,ANTLR 是一个解析器生成器,它将采用您的 EBNF 并为您创建类似上述代码的内容。) 一些想法: 您可能希望向 Token 结构添加一个字段来传达词法分析器已识别的标记类型。 (例如,整数文字与类似单词的东西与标点符号)这并不是绝对必要的,但它会让解析器变得更容易。 left结构的right和ExprNode字段表明你的AST将是一个二叉树。这可能一开始会起作用,但最终(当您扩大 EBNF 时)您可能会希望允许任意数量的“子节点”。
如何删除“www”。从原始 URL 通过 python 中的 [urllib] 解析?
原网址 ▶ https://www.exeam.org/index.html 我想从原始 URL 中提取 exeam.org/ 或 exeam.org。 为此,我使用了 urllib,这是我所知道的 Python 中最强大的解析器, 但不幸的是...
ActionScript中有类似getElementById的东西吗? 我正在尝试制作一个 Flash 页面的原型,该页面从 xhtml 文件获取数据。我想要两个可访问的 html 版本(对于
我正在尝试使用 C++ 解析 NASDAQ ITCH 协议数据转储。这些文件很大,任何有兴趣的人都可以在这里找到: ftp://emi.nasdaq.com/ITCH/ 这些文件的规格归结为......
任何人都知道可以将时间字符串(例如“30min”或“2h 15min”或“2d 15h 30min”)解析为毫秒(或某种 Duration 对象)的 Java 库。 Joda-Time 可以做这样的事情吗? (...
我想通过PHP解析以下HTML:https://pastebin.com/raw/5Z59HTcW 问题是并不总是应该解析一行,而是应该在一个前面解析所有 3 个跨度元素......
为什么 C/C++ 不扫描我的代码文件夹而只扫描我的 Visual Studio 文件夹?
当我在*.c中使用“Go To Definition”时,它总是跳转到.h,而不是*.c中的函数代码。 调试后,我发现根本原因是 C/C++ 不扫描我的代码文件夹,而是只扫描我的 Visual ...
解析 biblatex (.bib) 文件并将其转换为所需的 vec 需要大量时间
我想拓宽我在编程语言方面的视野,因此,正在尝试构建一个小助手应用程序来管理 Rust 中的 .bib 文件。 现在我陷入了一个我无法解决的问题......