早教吧 育儿知识 作业答案 考试题库 百科 知识分享

写一个文法使其语言是奇数集S→A丨CAC→CB丨CA→1丨3丨5丨7丨9C→0丨1丨2丨3丨4丨5丨6丨7丨8丨9B→1丨2丨3丨4丨5丨6丨7丨8丨9这样写对吗?错的话哪里错了?

题目详情
写一个文法使其语言是奇数集
S→A丨CA
C→CB丨C
A→1丨3丨5丨7丨9
C→0丨1丨2丨3丨4丨5丨6丨7丨8丨9
B→1丨2丨3丨4丨5丨6丨7丨8丨9
这样写对吗?错的话哪里错了?
▼优质解答
答案和解析
首先分析题意,本题是希望构造一个文法,由它产生的句子是奇数,并且不以0开头,也就是说它的每个句子都是以1、3、5、7、9中的某个数结尾.如果数字只有一位,则1、3、5、7、9就满足要求,如果有多位,则要求第1位不能是0,而中间有多少位,每位是什么数字(必须是数字)则没什么要求,因此,我们可以把这个文法分3部分来完成.分别用3个非终结符来产生句子的第1位、中间部分和最后一位.引入几个非终结符,其中,一个用作产生句子的开头,可以是1-9之间的数,不包括0,一个用来产生句子的结尾,为奇数,另一个则用来产生以非0整数开头后面跟任意多个数字的数字串,进行分解之后,这个文法就很好写了.