我目前正在使用File::Basename fileparse来分离文件的目录、基本文件名及其扩展名,如下所示:
my($myfile_name,$mydirectory, $file_extension) = fileparse($$rhash_params{'storage_full_path_location'},'\..{1,4}');
但是请注意,有一种变体,实际上可以为函数提供后缀数组,该数组将包含所有已知的文件扩展名
因此,我正试图找到一种安全的方法来实现这一点,因为我看到我有一
标签: Parsing
grammarcontext-free-grammarrecursive-descentll
我最近一直在努力自学解析器(用于语言/上下文无关语法)是如何工作的,除了一件事之外,大部分似乎都是有意义的。我特别关注LL(k)语法,其中两个主要算法是(使用堆栈/解析表)和(简单地使用递归)
就我所见,递归下降算法适用于所有LL(k)语法,可能更多,而LL解析器适用于所有LL(k)语法。然而,递归下降解析器的实现显然比LL解析器简单得多(就像LL解析器比LR解析器简单一样)
因此,我的问题是,当使用这两种算法时,可能会遇到哪些优点/问题?既然LL适用于同一组语法,而且实现起来更为复杂,那么为什
我想学习如何编写动态解析器来执行代码完成、突出显示等任务
我已经阅读了《龙之书》并编写了一些解析器,但我希望有更多处理错误代码的经验,尤其是在编写代码时
像Eclipse和NetBeans这样的IDE显然包含这样的代码,但是在哪里呢
其他哪些项目/书籍可能相关
LISP或函数示例也很受欢迎。请查看。查看xtext。它在幕后使用ANTLR解析器,但为您生成语法突出显示编辑器、内容辅助、大纲和许多其他功能
看
我从一种形式良好(并且运行良好)的语言语法开始。变量,
二进制运算符、函数调用、列表、循环、条件等。在此语法中,我想添加我所称的对象构造:
object
: object_name ARROW more_objects
;
more_objects
: object_name
| object_name ARROW more_objects
;
object_name
: IDENTIFIER
;
关键是能够访问嵌套在对象中的标量。例如:
car->col
我已经为我的项目写了一个日志。我记录到文本文件,正如你可能猜到的,有一个时间戳,名称空间,类,方法。。。最后是一条日志消息。像这样:
TestNamespace.MyProject.exe Error: 0 :
11/11/2010 10:24:11 AM
Assembly: TestNamespace.MyProject.exe
Class: myClass
Method: Test
This is a log message !
TestNamespace.MyProject.exe
我希望在一个项目中有两个lexer,我不希望在构建中有多个yylex函数时遇到问题。我可以用不同的前缀进行lex输出吗 您可以在makefile中使用flex的-Pprefix参数。使用flex-Pfoo可以有效地为所有yy生成的函数添加前缀。查看以了解更多详细信息。flex允许您这样做。只需定义YY_DECL宏。关于实际UNIX(TM)LEX(1),但是, < P>可以构建C++ LyxER。这意味着所有的状态信息都保存在一个对象中
那么,这只是使用正确对象的问题
编译器解析源代码并构建抽象语法树。用于构造抽象语法树的函数返回指针,这些指针构成合成属性。它们是什么?它们与继承属性有何不同
编辑:我不知道这是否有帮助,但我最初是在法语环境中听说这些术语的:Attributes synthétisés,Attributes hérités.属性是与中心利益相关的附加值。在AST的情况下,您可以将它们视为与每个AST节点相关联的成对(属性名称、属性值),其中属性名称对应于某个有趣的事实类型,属性值对应于该事实的实际状态(例如,“(子树中的常量计数,12)”
继承
嘿,我正在创建一个演示来展示使用pivotviewer的好处。我创建了一个包含大约50个要显示的项目的简单集合,并创建了一个简单的pivotviewer来显示它
这是我的pivotviewer,它位于main.xaml的内部
<Pivot:PivotViewer x:Name="PivotViewer" Grid.Row="1" Grid.ColumnSpan="2"/>
这不是我的收藏,但我的pivotviewer与此收藏完全相同。
当我加载集合时,它会在左上角显示URL和加载图
标签: Parsing
grammartext-parsingleft-recursion
我正在复习明天的考试,复习前几年的考试
考试的重点是语法
Expression -> Foo "+" Bar "end"
Foo -> [a-z0-9]+ | Expression
Bar -> Expression Foo | a*b*c+
我试过,花了好几个小时研究怎么做,但还是想不出来
我已经考虑过用Epsilon之类的东西来代替它,但是我没有信心
我想我需要创建一个Foo'和一个Bar',然后加入epsilon规则,但我不确定
有人能告诉我(简单地)如何把它改成一个能
我在很多modx evolution 1.0.5安装中都遇到了这个错误(我总是使用1&1服务器,在Linux版本中),它无法加载主页(而不是任何其他页面)。似乎每次我通过管理器或API代码清理缓存时,它都会在缓存中再次创建此文件:
docid_1.pageCache.php
但问题是,即使文件夹缓存和其中的所有文件在创建用于缓存的文件时设置为777权限,它们也有任何权限集,这就是导致此错误的原因
有人犯过这个错误吗?我一直在MODX论坛上搜索,但没有发现任何人对此感到担忧,但我仍然可以看到,自从
我正在查看VMWare的MIB文件,它们具有以下结构(显然已精简):
所以vmwVmIdx是表的索引,但它被标记为不可访问。果不其然,如果你提出要求,什么也不退还。那么,表的索引是如何确定的呢?我见过可以显示此表的应用程序,但如何显示
是否所有应用程序都只查看检索到的每个对象的OID的最后一个整数,并假设这是索引?如果是这样的话,它是如何与我的相一致的呢?在做了一些研究之后,它被认为是使索引列不可访问的最佳实践。因此,您确实只需要OID的最后一点,并将其用于索引
因此,在查看表中的条目时,需要附
我有兴趣通过实现基于堆栈的编程语言来扩展我的计算机编程知识。我正在寻求关于从何处开始的建议,因为我希望它具有像“pushint 1”这样的函数,它将值为1的整数推送到堆栈顶部,并通过像“L01:jump L01:”这样的标签进行流控制
到目前为止,我已经实现了我希望我的语言的C#实现(想要链接到它,但IDEOne被阻止),但它非常混乱,需要优化。它将输入转换为XML,然后对其进行解析。我的目标是使用较低级别的语言(可能是C/C++),但我的问题是实现一个可以容纳各种数据类型且没有固定大小的堆栈
此lisp函数旨在将表达式作为参数,然后从中删除多余的“not”并返回它。它检查参数是否为非空列表,如果不是,则返回nil(基本情况)。如果它不是空的,我想检查car(x)=car(cdr(x))='not'。如果没有检测到它们是一对“not”,那么它应该递归并建立在一个要返回的列表上。如果检测到它们都是“not”,那么它仍然会递归,但也会跳过car(x)和car(cdr(x))。现在,这段代码所做的就是返回一个与参数相同的表达式,所以我假设问题是嵌套if语句中的条件没有正确设置,如何检查car
我试图解析一行文本,如下所示:
Blah blah A=1234 B=5678 C=9999 blah blah
显然这不会运行,但是你可以看到我正在尝试做什么。我知道我可以像下面的代码那样做,但它需要大量的输入,可读性较差:
expect {
* {
set line split $expect_out(buffer) " "
set A lindex (split (lindex $line 3) "=") 1
set B lindex
我有一个查询,它返回表中的一个单元格,其中包含所有xml。我有它,所以我可以吐出什么是在细胞没有任何分隔符。现在我需要实际获取每个单独的元素,并将它们与我的对象链接起来。有什么简单的方法可以做到这一点吗
def sql
def dataSource
static transactional = true
def pullLogs(String username, String id) {
if(username != null && id
我提出了以下强制优先的语法:
A : L ( '[' A ']' L* )*
L : M (('+'|'-')M)*
M : P (('*'|'/')P)*
P : ID | NUM
其中ID可以是字母,num是整数
问题
我可以解析以下字符串:
a[i + 1]
a[i] + 1 or a[a[i]*i]
我无法分析以下字符串:
a[i + 1]
a[i] + 1 or a[a[i]*i]
我的问题是A引入了递归问题。因为我不想做回溯。我必须重写语法来解决这个问题。我
我需要解析vCard 2.1 Name属性
在vCard 3.0和4.0中,Name属性的每个组件都可以有多个值。例如,RFC 2426明确规定:
个别文本
组件可以包括多个文本值(例如,多个
其他名称)以逗号字符(ASCII十进制)分隔
44)
但在vCard 2.1中,看起来每个组件只能有一个值。即使可能至少有其他名称(第三个字段)可以包含逗号
vCard 2.1 Name属性是否可以在姓氏、给定名称、其他名称、名称前缀和名称后缀字符串中包含COMA?如果将其视为vCard 3.0和4.0中
希格斯,
我想使用Byacc解析文本。文本由空格和新行组成。您如何看待这些规则来解析一个文本
text: /* empty string */ {$$ = "";}
|TEXT {$$ = $1;}
|TEXT whitespace text {$$ = $1 + $2 + $3;}
|TEXT line whitespace text {$$ = $1 + $2 + $4;}
标记文本位于Jflex文件中,它表示一个单词。其他两条规则,空格和行被删除:
我正在尝试使用FsLex和FsYacc解析一个简单的脚本语言,但在区分负数和负数时遇到了问题
如果我计算术语“1-2”,解析器将返回所需的AST:减号(numberTerral(1.0),numberTerral(2.0))。但是如果我计算术语“1-2”,lexer将产生数字1,后面是数字-2,这是无效的输入
我已经做了一个最小的程序来重现我的问题。Ast的定义如下:
module Ast
type Expression =
| NumberLiteral of double
| Mi
我试图为一种简单的脚本语言解析表达式,但我感到困惑。现在,只能将数字和字符串文字解析为表达式:
int x = 5;
double y = 3.4;
str t = "this is a string";
但是,我对解析更复杂的表达式感到困惑:
int a = 5 + 9;
int x = (5 + a) - (a ^ 2);
我想我会像这样实施它:
do {
// no clue what I would do here?
if (current toke
在我的大学里完成了编译器设计课程后,我一直在为一种简单的编程语言编写编译器,但我在解析器方面遇到了麻烦。我正在用mosml制作编译器,并使用它的内置解析器mosmlyac来构造解析器。下面是我的解析器的一个摘录,显示了语法和结合性+优先级
...
%right ASSIGN
%left OR
%left AND
%nonassoc NOT
%left EQUAL LESS
%left PLUS MINUS
%left TIMES DIVIDE
%nonassoc NEGATE
...
Prog
我有一些带有计算字段的excel表格,例如CELL_C=FIELD_A+FIELD_B。我需要从该公式中提取所有单元格,以便用不同的颜色将其高亮显示。
是否有任何内置的VBA函数来解析cell.Formula以获取单元格范围?您始终可以通过以下方式获得一级前导:
Sub qwerty()
Dim rng As Range
Set rng = ActiveCell.Precedents
If rng Is Nothing Then
Else
MsgBox rng.Addre
所以我正在用DX11制作一个游戏引擎,这是一个奇怪的问题,我已经有一段时间了
我以为是背向的正常人,但那没什么区别。
我尝试了剔除模式。不走运
在.gif中要查看的东西是手榴弹的别针。请注意,它并不是一直处于半隐形状态,而是只有在它位于手榴弹的摄像头一侧时才处于隐形状态
我会发布一些代码。请询问您是否还想再看一次
这是从.obj文件加载数据的函数
bool CModel::LoadModel(char* filename)
{
struct Coord
{
float x, y, z;
我需要一些批处理专家来帮助我解决这个问题。我有几个文件,通过这些文件,我们正在使用wget监控来自网站的响应。当站点关闭时,我们在test1.txt中获得以下响应代码:
Connecting to 10.x.x.x:443... failed: Bad file descriptor.
当站点运行时,test2.txt中的响应代码为
Connecting to 10.x.x.x:80... connected.
HTTP request sent, awaiting response...
CFG如下所示:
S -> SD|SB
B -> b|c
D -> a|dB
我尝试的方法如下:
S -> SS'
S'-> D|B
B -> b|c
D -> a|dB
我用左因子分解法从第一个产品(S->SD | SB)中删除了非确定性
因此,应用左因子分解后的CFG如下:
S -> SS'
S'-> D|B
B -> b|c
D -> a|dB
我需要找到生产的第一个S,即S->SS'
以便进一步进行。有人能提供帮助或
Backus Naur表单在语法的产生式规则的左侧和右侧之间使用::=。维基百科告诉我,符号是从演变而来的:≡。这两个符号都有名称吗?根据@rici的提示,Unicode简单地称其为双冒号等于,似乎没有另一个正式名称。“::=”表示左侧的符号必须替换为右侧的表达式。引用wiki;)如果有什么帮助的话。所以,是的,我也会选择“分配”,Unicode符号2A74被称为“双冒号等于”。@rici:如果Unicode使用通用名称“双冒号等于”,那么我怀疑没有更具体的了。谢谢
我花了几天时间阅读zlib(以及gzip和deflate)RFC,我可以说它们是一种垃圾。缺少很多细节,所以我要开始这个问题
我正试图解析一个zlib数据,我需要知道一些关于头的细节
首先,RFC说将有2个字节,CMF和FLG
CMF分为2个4位部分。第一个是CM,第二个是CINFO
CM的可能值是什么?RFC说8意味着deflate,而15是保留的,但是其他可能的值呢
CINFO另一侧,如果我正确理解RFC,则应始终为8(如果我错了,请纠正我)
跳过FLG和可能的FDICT,我们进入压缩数据部
我试图理解LL(1)解析输入期间的堆栈操作
在一个示例中,输入已到达末尾,即。$。虽然我的堆栈中有一些变量,但它们在我的解析表中的$列下有空的生成规则
$
A-> epsilon
B-> epsilon
C-> epsilon
D-> epsilon
从堆栈中简单地弹出ABCD以到达$合法吗?或者当我们到达输入端$时,无论可用的生产规则如何,堆栈都必须为空吗?在这种情况下,LL(1)解析器的工作方式是预测→ ε产生,而堆栈是非空的,因为这就是解析表在这里要做的。
我试图用以下简单的演示类解析字符串“define one:1”:
public class ANTLRDemo {
public static void main(String[] args) {
AremelleLexer lexer = new AremelleLexer(new ANTLRInputStream("define one: 1."));
CommonTokenStream tokens = new CommonTokenStream(
我正在使用JavaCUP工具为我的语言生成一个解析器。我正在尝试编写一个语法来匹配嵌套的和多个if_-else语句
输入文件
// matches
if ()
if ()
else
if ()
else
else
// no match -> modifying grammar leads to shift/reduce conflict
if ()
else
语法
expr ::= if_then_else_statement;
if_
这是正确的递归语法:
<assign> -> <id> = <exp>
<id> -> A | B | C
<exp> -> <term> + <exp> | <temp>
<term> -> <factor> * <term> | <factor>
<factor> -> ( <exp> ) | &
如何消除以下类型的左递归。我似乎不能把一般规则应用到这个特殊的问题上
A -> A | a | b
通过使用消除规则,您可以得到:
A -> aA' | bA'
A' -> A' | epsilon
仍然有递归
这是否说明语法是/不是LL(1)
谢谢。注意规则
A→ A
从某种意义上说,它是完全无用的。应用此规则对派生没有任何影响。因此,我们可以安全地将其从语法中删除,而无需更改语法生成的内容。这只剩下
A→ a | b
这是LL(1)
我正在为我的一个项目实现一个解析器,它实现一种特定于领域的语言
我遇到的一个困难是生成一个表达式(使用FParsec中的运算符receidenceparser实现),这样整个表达式都是可选的
我已经用与网络上的许多示例大致相同的方式实现了我的解析器OPP。我也尝试过在行末注释中使用空格的位置进行切换。但是,我的所有尝试似乎都不适用于bot情况(表达式和行尾注释都是可选的)
具体来说(如下面的示例中所实现的),我正在尝试成功解析以下内容
KeyValue: expression # commen
我试过,Parsey McParseface,这是一个经过预先训练的词性标记器,它与Syntax Net一起提供,它在标记具有适当大小写的句子方面做得很好
我想标记所有小写的句子,比如:我在多伦多长大,然后解析它以识别命名实体,比如城市,在本例中,多伦多
我有几个问题:
是否有一个预先训练过的、不区分大小写的、我可以使用的SyntaxNet的POS标记器
我应该如何为SyntaxNet培训自己的不区分大小写的POS标记器
培训SyntaxNet POS标记器是否需要大量CPU/GPU电源,或者
我想用ApacheNutch解析几个电子商务网站的产品页面。目前,我正在使用特定于域/网站的解析器,为每个站点使用不同的XML文件为Jsoup定义CSS选择器。现在我要介绍大量的电子商务网站,为每个网站定义单独的XML文件不是一个好主意
我想开发一个通用的解析器来解析大量电子商务网站的特定内容。由于所有电子商务站点的结构都非常紧密,我计划定义一些通用的抽取规则来覆盖所有站点。我读过,但我认为这是专为文章摘录
我怎样才能做到这一点?我需要开发一些机器学习算法或模糊逻辑或其他什么吗?我在机器学习或模
嗨,我有这样一个代码:
data Digit = Zero | One | Two | Three | Four | Five | Six | Seven | Eight |
Nine
deriving (Eq, Show)
data Number = Single Digit | Many Digit Number deriving (Eq, Show)
data Expr = Lit Number
| Sub E
解析数字和字符串是lexer的工作吗
考虑到我在问lexer是否应该解析输入,这听起来可能愚蠢,也可能不愚蠢。但是,我不确定这实际上是lexer的工作还是解析器的工作,因为为了正确地lex,lexer首先需要解析字符串/数字,因此如果解析器这样做,代码似乎会重复
这真的是lexer的工作吗?或者lexer应该简单地将像123.456这样的字符串分解成123,,456,然后让解析器计算出其余的字符串吗?对于字符串来说,这样做并不那么简单…我假设您希望将“123.456”作为一个完整的值来对待,在这
我正在使用yecc解析我的标记化asm类代码。在提供类似于“MOV[1]、[2]\nJMP hello”的代码以及lexer'ing之后,这就是我得到的响应
[{:opcode, 1, :MOV}, {:register, 1, 1}, {:",", 1}, {:register, 1, 2},
{:opcode, 2, :JMP}, {:identifer, 2, :hello}]
当我解析这个时,我得到
[%{operation: [:MOV, [:REGISTER, 1], [:RE
我曾想制作一个Pug解析器,但除了缩进是众所周知的上下文敏感(可以通过lexer反馈循环进行简单的黑客攻击,使其几乎与上下文无关,这是Python采用的),还有什么其他原因使其不与上下文无关
XML标记绝对不是上下文无关的,每个起始标记都需要匹配一个结束标记,但帕格没有这样的限制,这让我想知道我们是否可以将每个起始标识符解析为标记根的产物。帕格似乎缺少的主要内容,至少是从其网站的偶然扫描中,是对其语法的正式描述。甚至是非正式的描述。也许我找的地方不对
不过,根据这些例子,它看起来并不可怕。会有一
我已经为一种简单的内部SQL风格的语言编写了一个解析器。这是一个典型的递归下降解析器
当然,我们有表达式,我模型中表达式的两种可能形式是BinaryExpression和FunctionExpression。我的问题是,既然二进制表达式可以建模为具有两个参数的函数,那么保持这种区别有什么好处呢
也许函数调用通常不是作为表达式建模的,而是作为语句建模的,但在这里,我的所有函数都必须产生一个值。如何选择语言建模实际上取决于您;这完全取决于您打算如何使用构建的AST
当然,二元运算符的求值和具有两个参
我应该使用Sablecc为Miniphon编写一个.grammar文件。我得到了这些转移/减少冲突:
shift/reduce conflict in state [stack: TIf PTpower *] on TMult in {
[ PMltp = * TMult PTopower Mltp ] (shift)
[ PMlpt = * ] followed by TMult (reduce)
}
shift/reduce conflict in state [sta
我们如何用FParsec解析mixfix操作符
我试图创建一个类类型,它看起来像operatorreceidenceparser:
let identifier = many1Satisfy (fun c -> isLetter c || isDigit c || c = ''')
let symbol =
[ '!'; '@'; '&'; ','; '%'; '^'; '.';
'§'; '*'; '°'; '$'; '~'; ':'; '-';
我正在写一个PEG文件,用于我们的dsl。我需要解析一个键值,其中值是三重引号内的正则表达式。我无法为它编写有害生物规则
这里的值是一些正则表达式
第一条规则是:
TQ = {"\"\"\""}
我需要
regex = {TQ ~ Anything but not TQ ~ TQ}
我试过了
regex = {TQ ~(!TQ)* ~ TQ}
这不起作用,也不合适
regex = {TQ ~ ANY* ~ TQ}
它贪婪地消耗所有令牌,甚至在最后使用三个引号
规则应该在三个引号内解析正则
假设我构建了一个简单算术运算符的抽象语法树,如Div(左,右)、Add(左,右)、Prod(左,右)、Sum(左,右)、Sub(左,右)
然而,当我想将AST转换为字符串时,我发现很难去除那些不必要的并列关系
请注意,输出字符串应遵循正常的数学运算符优先级
示例:
Prod(Prod(1,2),Prod(2,3))我们将其表示为((1*2)*(2,3))
设置为字符串,它应该是1*2*2*3
更多示例:
(((2*3)*(3/5))-4) ==> 2*3*3/5 - 4
(((2-3)*
有一个有票的网站,我的开发人员编写了一个解析器(用JS编写),解析器本身以机器人的形式对电报是合法的。只有两个命令-/天和/路线。每隔15分钟,电报机器人将给出给定日期和航线的现有航班的答复
工作简介:
有一个网站-我们发送一个POST请求,我们接收HTML,然后
JS解析这个HTML,然后给我们的机器人提供答案
对非功能性测试没有任何要求。您建议生产什么类型的产品?我可以使用Postman、JMeter和其他测试软件吗
我是非功能性测试方面的新手,但我对这种功能性测试的非功能性测试非常感兴趣
所有人都认为,LR(1)在各个方面都应该比LALR(1)更强大,因为LR(1)构建了LR(1)项的规范集合,而LALR(1)只是一个更好的SLR(1)解析器
那么,当我尝试此输入时,为什么此语法在LALR(1)解析器中成功工作,而在LR(1)解析器中却无法工作:
int+int
对于此语法:
S' -> S
S -> Add
Add -> Mul
Add -> Add + Mul
Mul -> Const
Mul -> Mul * Mul
Const -
我正试图从yaml文件中创建一个自引用多个。引用保存为UUID,因此我尝试了以下方法:
type Activity struct {
ID uuid.UUID `yaml:"id" gorm:"type:uuid;primaryKey"`
ActivityStreamID uuid.UUID `yaml:"stream" gorm:"type:uuid"`
例如,我有一个类:IPV4Packet,它有一个类方法,该类方法使用一个十六进制空格分隔str,例如:“aa bb cc”,将其分隔为列表的元素,每个元素根据字符串中元素的偏移量对应于标题的字段,和数据内容,并返回属性已使用生成的列表初始化的IPV4Packet的实例
我写了一个解析器吗?“解析”字面意思是“分成几个部分”,所以如果你想把它称为解析器,你当然有权这么做。类似地,您可以将对输入求和的程序称为“计算器”。毕竟,这是可以计算的。为什么这很重要?
我看了看
基本上,我试图做的是实现一个函数来构建一个非常简单的AST,使用歧视联合(DU)来表示树
我想使用令牌/符号来构建树。我想这些也可以用杜来代表。我正在努力实现插入功能
让我们假设我们使用以下内容来表示树。基本思想是,对于整数的加法和减法,我只需要二叉树。表达式可以是运算符或常量。这可能是实现树的错误方法,但我不确定
type Tree =
| Node of Tree * Expression * Tree
| Empty
and Expression =
| Operator //c
我有一个语法,我被要求建立一个解析表,并验证它是否是LL(1)语法。在构建解析表之后,我注意到一些列是空的,并且其中没有生成规则。这是否意味着它是错误建造的?或者它不是LL(1)?或者是什么东西不见了
谢谢。没什么好担心的。空列表示终端符号从未开始生产(除其他外)。例如,以以下简单的LL(1)语法为例:
→ abcdefg
这里,在S的行中,b、c、d、e、f和g的列都将为空,而a的列将是规则S→ abcdefg。更具体地说,扩充语法如下所示:
| a | b | c | d
1 2 3 4 5 6 ...
下一页 最后一页 共 88 页