繁体   English   中英

Java中的正则表达式(正则表达式和语法)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM