[英]Regex in Java (Regular Expression and Grammar)
那就是我的问题:我有一个明天要交的作业(过去几天我一直在努力),我想其中的一半,但是另一半我只是有一点头绪。 基本上,我必须编写一个代码,其中用户给我一些单词及其类别(例如字典)和语法,例如:
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,但到目前为止还没有发现太大的帮助。
先感谢您!
语法通常不作为正则表达式实现,因为它们很复杂且具有自引用功能,因此正则表达式对于解析传入的文本更为有用。 您需要的是比列表更好的数据结构来表示语法,并帮助您验证句子在语法上是否正确。 查看抽象语法树。
通常,您不能使用正则表达式实现语法,除非它是常规语言的语法,例如不包含嵌套语法,例如
expression: '(' expression ')'
您需要某种下推式自动机,例如递归下降或LALR(1)解析器。
请参阅Chomsky层次结构 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.