- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
通常,DFA 用于检查给定字符串是否以某种语言出现。例如 _ab1c 出现在 C 变量语言中。
我在做什么?但正如 this question 中所述,我正在使用 DFA 来跟踪所有评论、字符串等。
我怎么样?考虑一个跟踪给定字符串/程序中//注释的示例。
static int makeTransition[][] = {
/* Transition Table */
/*{other,\n, \, /, *, ', "} */
/*q0*/ { 0, 0, 0, 1, 0, 0, 0},
/*q1*/ { 0, 0,-1, 2, 0, 0, 0},
/*q2*/ { 2, 0, 2, 2, 2, 2, 2},
};
为此,如果我有,
void assignPointerValuesInPairs(int index)
{
/*comments is an ArrayList
before marking start hotpointer = -1
after marking start hotpointer = 0
after marking end hotpointer is resetted to -1*/
switch(currentState)
{
case 2: /*q2*/
comments.add(/*mark start*/);
hotPointer = 0;
break;
case 0: /*On initial state q0*/
switch(hotPointer)
{
case 0: //If I am in end of comment.
comments.add(/*mark end*/);
hotPointer = -1; //Resetting the hotPointer.
break;
case -1: /*Already in q1 only*/
/*Do nothing*/
}
}
}
public static void traceOut(String s) //entire program is accepted as string.
{
int index = 0;
while (index < s.length() ) {
char c = s.charAt(index);
try{
currentState = makeTransition[currentState][symbolToInteger(c)];
if(currentState == -1)
throw new InvalidSyntaxException();
}
catch(InvalidSyntaxException e){
currentState = 0;
invalidSyntax.add(index);
}
assignPointerValuesInPairs(index);
index++;
}
currentState = 0;
assignPointerValuesInPairs(index); //These 2 statements help to color while typing.. (i.e) It forces the current state to get finished abruptly.
}
}
我的问题是...
我可以使用 DFA 来以这种方式标记//注释的结束和开始吗?或者我必须遵循其他方式,例如 CFG 等..
即
My Statement: I can use DFA, not only to check for a particular language also totrace out certain strings belong to certain languages in a givenstring. (proof : by above method).
Does my above statement correct?
最佳答案
My Statement: I can use DFA, not only to check for a particular language also to trace out certain strings belong to certain languages in a given string.
Does my above statement correct?
你的说法完全正确。 某些语言可以使用DFA进行检查。(证明是存在的。如果任何这样的语言存在,那么你的陈述就是正确的。并且该语言
<program> ::= 'A'
是一个满足存在证明的简单例子。)
但这并不是一个特别有用的声明,因为它没有说明可以使用 DFA 检查什么种类语言。
例如,如果您的评论语言支持评论 block 嵌套(正如某些历史编程语言所做的那样),则 DFA 将不起作用。
您的陈述忽略的第二点是,对于给定语言,使用 DFA 是否实用。对于语法中所有形式的嵌套/递归都有限制的语言,理论上您可以将语法转换为单个有限 DFA。然而,DFA 太大,无法实现。
(顺便说一句 - 没有现代编程语言在语法层面上有这样的界限......并不是说这个问题只与编程语言有关。)
关于java - 我可以使用 DFA 来跟踪特定语言的字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7669718/
我最近在读一篇论文 Algorithms to Accelerate Multiple Regular ExpressionsMatching for Deep Packet Inspection关于
我正在备考,完成了图中这个任务 通常,从 NFA 到 DFA 的转换对我来说很容易。我从 NFA 创建一个转换表,并为每个"new"组合状态创建一个新列等等(看看我的尝试解释得更好) 不知何故,我对
我正在练习我的 DFA,我遇到了这个似乎非常复杂的问题。我试着把它分成两个较小的问题,我有一个答案,但它看起来不适合我。 有人可以帮助我,或者至少给我一些提示。 顺便说一下,它们都是接受状态。 我能想
正如标题所示,我希望有人帮助我编写 NFA 到 DFA 的转换的代码。我只需要伪代码。我试过用谷歌搜索,甚至找到了整个源代码,但是几乎没有资源可以帮助我给我一个正式的方法(用书面文字,而不是通过图片)
我有一个关于 DFA 最小化的问题。所以我使用了众所周知的技术将正则表达式转换为 NFA,然后使用 goto/closure 算法从中构造 DFA。现在的问题是如何将其最小化?我在这里看过有关它的课文
我已经在纸上编写了DFA,并希望将其转换为一组正则表达式。有人知道这样做的好工具吗? 最佳答案 从我的Google小搜索中,我找到了JFLAP。他们也有关于how to Convert FA to r
一个多小时以来,我一直在尝试不同的方法来解决这个问题,但我感到非常沮丧。 问题是:给出以下每种语言在 Sigma = {0,1} 上的正则表达式和 DFA。 a). {w ∈ Σ* | w 包含偶数个
我正在学习如何使用配对表法(系统化约简法)来约简 DFA。这是我们要约简的 DFA。 第一步是在表格中布置 DFA: 0
有人能告诉我所附的 DFA 是否正确吗? 我想为具有字母 Σ ={a, b} 的语言提供 DFA 我需要 DFA ----> A={ε, b, ab} 最佳答案 不,有多种原因: 您的自动机 bab
我的程序应该为二进制字符串实现 dfa...dfa 是一台一次只能处于一种状态的机器(当您输入字符串时,机器应该使用它,并且在最后一步它应该到达最终状态。如果是这样,我们说该字符串被机器接受)...这
我想创建一个 O(1) 复杂度的自动机的转换函数。我在考虑使用 HashMap 或 Binary tree 。那些想法好吗?你有什么建议吗?感谢您的关注:) 最佳答案 如果您确实需要对转换函数进行持续
我有一个 DFA A 和一个 CFG G,然后我必须检查 G 是否生成了 A 不接受(被 A 拒绝)的无限单词,以及一个不错的复杂度时间。 我想用 CFG 构造一个图,如果它包含有向循环,则生成无限语
我正在查看将 DFA 转换为正则表达式的时间复杂度分析“Introduction to the Automata Theory, Languages and Computation”,第 2 版,第
我需要生成一个确定性有限自动机 (DFA),它是从满足以下属性的所有可能的 DFA 中选出的。必须选择均匀分布的 DFA。 DFA 必须具有以下四个属性: DFA 有 N 个节点。 每个节点都有 2
我有一个 DFA (Q, Σ, δ, q0, F) 和一些“不关心的转换”。这些转换模型符号已知在某些情况下不会出现在输入中。如果采取任何此类转换,则结果字符串是否被接受都无关紧要。 是否有一种算法可
我有一个程序,它只是将所有状态作为一组状态作为输入。然后下一个输入是状态集合中的初始状态,然后是最终状态集合。 接下来是我在状态之间进行的一组转换。 例如:q0,1,q1 这意味着在输入 1 上存在从
在修改封闭源代码游戏时,我在运行时修改机器代码以跳转到我自己的代码中。为了以通用方式执行此操作,我使用模式匹配来查找我想要修改的代码位置。 (模式仅由字符/字节和通配符组成,其中字节可以变化。)通过从
从这个语法开始:https://stackoverflow.com/a/14287002/1082002我会实现一个简单的语法来接受和评估这样的简单语言: { if a==c { a
有了 DFA 的图表,如何将其转换为图灵机?我是否必须找到 DFA 接受的语言,然后创建图灵机?或者有直接的方法吗? 谢谢你。 最佳答案 DFA 中的每个转换读取输入的一个字符,跟随一个转换,然后移动
我希望在我的词法分析器中实现一个 DFA 最小化器,但我似乎无法生成一个看起来不像它已经是表达式的最小 DFA 的 DFA。 我正在从 NFA 构建 DFA,该 NFA 是使用后缀正则表达式中的汤姆森
我是一名优秀的程序员,十分优秀!