Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logic 更改解析语言_Logic_Bison_Flex Lexer_Boolean Logic_Modal Logic - Fatal编程技术网

Logic 更改解析语言

Logic 更改解析语言,logic,bison,flex-lexer,boolean-logic,modal-logic,Logic,Bison,Flex Lexer,Boolean Logic,Modal Logic,我正在使用模态SAT解算器。不幸的是,这个解算器使用的是Flex和Bison,这两种语言我都不精通 我想把一种语法改成另一种语法,但我有一些问题要做,即使在关于FlexLexer和Bison的教程之后 问题是: 我希望能够解析这样的模态逻辑公式: 在前面的符号中,这些公式是这样写的: (非(IMP(和(所有R0(IMP C0 C1))(所有R0 C0))(所有R0 C1))) 下面是用于解析它们的Flex/Bisons文件: "(" return LP; ")" retur

我正在使用模态SAT解算器。不幸的是,这个解算器使用的是Flex和Bison,这两种语言我都不精通

我想把一种语法改成另一种语法,但我有一些问题要做,即使在关于FlexLexer和Bison的教程之后

问题是:

我希望能够解析这样的模态逻辑公式:

在前面的符号中,这些公式是这样写的:

(非(IMP(和(所有R0(IMP C0 C1))(所有R0 C0))(所有R0 C1)))

下面是用于解析它们的Flex/Bisons文件:

"("      return LP;
")"      return RP; 
"[]"    return ALL;         
"<>"   return SOME;
"&"    return AND; 
"IMP"    return IMP;
"|"     return OR;
"IFF"    return IFF;
"~"    return NOT;
"true"    return TOP;
"false" return BOT;
"r"      return RULE;
"p"      return CONC;
alc.y 阻碍我正确解析此新语法的主要问题是:

  • IMP(ab)
    现在被写入
    ~B | A
    (与布尔逻辑
    (A=>B)(~B v A)
  • 所有RO
    现在都已写入
    [r0]
  • 现在编写了一些RO
  • IFF(ab)
    现在被写入
    (~B|A)和(~A|B)
    。(IFF代表当且仅当)
下面是新符号的小列表,即使我不知道如何解析它们:

"("      return LP;
")"      return RP; 
"[]"    return ALL;         
"<>"   return SOME;
"&"    return AND; 
"IMP"    return IMP;
"|"     return OR;
"IFF"    return IFF;
"~"    return NOT;
"true"    return TOP;
"false" return BOT;
"r"      return RULE;
"p"      return CONC;
(“返回LP; “)返回RP; “[]”返回全部; ""还一些,; “&”返回并返回; “IMP”返回IMP; “|”返回或; “IFF”返回IFF; “~”不返回; “真”返回顶部; “假”返回BOT; “r”返回规则; “p”返回浓度; 我假设只有这2个文件会改变,因为它应该仍然能够通过使用other.y和.lex编译源代码来读取前面的语法

但我想请你帮我准确地写下来:/

提前谢谢

Tommi Junttila使用
Bison
Flex
Boolean
表达式和电路实现了一种语言


学习源文件并不能完全取代学习正确的
Bison
/
Flex
教程,但它肯定会给你一个好的开始。

对于有同样问题的人(我假设这个问题非常罕见:)

有了好的词汇表,用谷歌搜索问题并找到解决方案就容易多了

第一个符号

(非(IMP(和(所有R0(IMP C0 C1))(所有R0 C0))(所有R0 C1)))

ALC格式

另一种符号

开始
([r0](~pO|p1)和[r0]p0)|[r0]p1)
结束

是格式

还有一种称为公式翻译工具(“ftt”)的工具,它是与Spartacus()一起开发和捆绑的。它可以在校准仪的所有格式之间进行转换

使用这个工具是一个避免使用Flex/Bison语言的小黑客


一个人只需要将一个问题转化为另一个问题,问题将是等价的,而且转化速度非常快。

我已经做了一些bison/flex教程,布尔表达式的解析已经开始工作。它甚至已经对一种特定的模态逻辑语法起作用了,我的目标是:如何解析第二种语法,不幸的是,这与我在教程中找到的语法完全不同…:/我只能试着激励你仔细阅读BC包。它实现了“不寻常的”布尔运算符,将其转换为您的需求应该不会太困难。
begin
(([r0](~pO | p1) & [r0]p0) | [r0]p1) 
end
"("      return LP;
")"      return RP; 
"[]"    return ALL;         
"<>"   return SOME;
"&"    return AND; 
"IMP"    return IMP;
"|"     return OR;
"IFF"    return IFF;
"~"    return NOT;
"true"    return TOP;
"false" return BOT;
"r"      return RULE;
"p"      return CONC;