簡體   English   中英

在Java中驗證給定Context Free Grammar的字符串

[英]Validate string given Context Free Grammar in Java

有人如何驗證字符串是否是無上下文語法的一部分? 不只是虛擬,而是為它構建算法?

給定具有上下文無關語法的規則,例如

  • V-> v1v2
  • v1-> 1 | 1V1
  • v2-> 2 | 2V2

很明顯,這是語言1 ^ n 2 ^ n。 但是你將如何使用算法來驗證它是否真的存在。 我想在java中完成這個。

您可能希望查看Earley算法CYK算法 ,這兩種算法用於決定字符串是否由無上下文語法生成。 無論語法中的生成規則如何,Earley的算法都會在時間O(n 3 )內運行任何長度為n的字符串(盡管big-O表示法中的常量項取決於語法),而CYK算法要求語法優先轉換為Chomsky法線形式以保證O(n 3 )運行時間。

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM