这就是我的问题:明天我有一份作业(过去几天我一直在研究它),我觉得它有一半,但另一半我只是有一点线索。基本上,我必须写一个代码,用户给我一些单词和类别(如字典)和语法,例如:
A: article adjective A
A: adjective B
B: noun
然后用户将输入一个句子,我将检查单词是否在我的字典中,如果是,我将输出他们的类别和"接受"如果它符合语法和"拒绝"如果它不匹配。
现在,我知道我可能必须使用正则表达式,但到目前为止我找不到任何真正有用的东西。
我将举一个输入和输出的例子:
Input:
Dictionary:
word: The
category: article
word: big
category: adjective
word: blue
category: adjective
word: car
category: noun
Grammar:
A: article adjective A
A: adjective B
B: noun
Sentences:
The big blue car
The car big blue
Output:
(first sentence)
article adjective adjective noun
Accept
(second sentence)
article noun adjective adjective
Refuse
所以,我的程序已经输出了正确的类别,但我不知道如何实现语法部分(我已经有一个带有arrayList的类用于语法)。正如我之前所说,我认为我将不得不使用Regex,但到目前为止还没有找到非常有用的。
提前谢谢!
答案 0 :(得分:1)
语法通常不是作为正则表达式实现的,因为它们是复杂的并且是自引用的,正则表达式对于解析传入的文本更有用。您需要的是比表示语法的列表更好的数据结构,并帮助您验证句子在语法上是否正确。查看抽象语法树。
答案 1 :(得分:0)
您通常不能使用正则表达式实现语法,除非它是常规语言的语法,例如,不包含嵌套语法,例如
expression: '(' expression ')'
你需要某种类型的下推自动机,例如递归下降或LALR(1)解析器。