91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 1KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-28
  • 語言: 其他
  • 標簽: LL(1)文法??python??

資源簡介

1. 實驗內容 1、 讓計算機接受一個文法,示例如(僅供參考): G[S] 為: S→AB S→bC A→ε A→b B→ε B→aD C→AD C→b D→aS D→c 2、 編程實現對上述文法是否是LL(1)文法的判斷,是則給出肯定回答,否則給出否定回答。 3、判別是否是LL(1)文法 。。。。。。

資源截圖

代碼片段和文件信息

‘‘‘
S
S->AB
A->&
B->&
C->AD
D->aS
S->bC
A->b
B->aD
C->b
D->c
#->#
‘‘‘
G?=?{}
#?input
print(“請輸入文法的開始符:“)
S?=?input()
print(“請輸入文法.(如:‘S->AB‘).最后文法以‘#->#‘結束.“)
while?True:
????keyvalue?=?input().split(“->“)
????if?key==‘#‘?and?value?==?‘#‘:?break
????elif?key?in?G.keys():G[key].append(value)
????else:?G[key]?=?[value]

#?print(G)

#?first
def?first(strfirstset=[]):
????t?=?str[0]
????if?t==‘&‘:?firstset.append(‘&‘)
????elif?t>=‘A‘?and?t<=‘Z‘:
????????for?s?in?G[t]:
????????????tempset?=?first(s?firstset=[])
????????????firstset.extend(tempset)
????????????if?‘&‘?in?tempset?and?len(str)>1:
????????????????firstset.extend(first(str[1:]firstset))?????????????????
????else:?firstset.append(t)
????return?set(firstset)

#?print?first
#?print(first(input()?firstset=[]))

#?follow
def?follow(chfollowset=[]father=[]):
????father.append(ch)
????if?ch==S:
????????followset.append(‘#‘)
#?????????return?followset
????for?key?in?G:
????????for?s?in?G[key]:
????????????if?ch?in?s:
#?????????????????print(ss.index(ch))
????????????????i?=?s.index(ch)
????????????????if?i?==?len(s)-1:
#?????????????????????print(father)
????????????????????if?key?in?father:?continue
????????????????????followset.extend(follow(keyfollowsetfather))
????????????????elif?i?????????????????????tempset?=?first(s[i+1:]?firstset=[])
????????????????????#print(tempset)
????????????????????if?‘&‘?in?tempset:
????????????????????????if?key?in?father:?continue
#?????????????????????????print(‘tempset=‘tempset)
????????????????????????tempset.remove(‘&‘)
????????????????????????followset.extend(tempset)
#?????????????????????????print(‘tempset=‘tempset)
????????????????????????followset.extend(follow(keyfollowsetfather))
????????????????????else:followset.extend(tempset)
????return?set(followset)

#?print?follow?????????????
#?print(follow(input()?followset=[]))

#?select
selectset={}
def?select():
????for?key?in?G:
????????for?s?in?G[key]:
????????????selectset[key+‘->‘+s]?=?first(s?firstset=[])
????????????if?‘&‘?in?selectset[key+‘->‘+s]:
????????????????selectset[key+‘->‘+s].remove(‘&‘)
????????????????selectset[key+‘->‘+s]?=?selectset[key+‘->‘+s]?|?set(follow(key?followset=[]father=[]))
????return?selectset

#?print?selectset
#?print(select())

def?judeLL1():
????flag?=?True
????select()
????print(‘文法的select?set如下:‘)
????for?key?in?selectset:
????????print(key+‘:‘selectset[key])
????print(‘LL(1)判斷過程如下(即select集合的求交集過程):‘)
????for?key1?in?selectset:
????????for?key2?in?selectset:
????????????if?key1==key2:?continue
????????????elif?key1[0]==key2[0]:
????????????????print(selectset[key1]‘U‘selectset[key2]end=‘‘)
????????????????tempset?=?selectset[key1]?&?selectset[key2]
????????????????if?tempset:
????????????????????flag?=?False
????????????????????print(‘?=‘tempset)
????????????????else:print(‘?=?NULL‘)
????return?flag
????
#?jude?LL(1)?????????
#?

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????3892??2017-12-21?11:15??SelectSet.py

-----------?---------??----------?-----??----

?????????????????3892????????????????????1


評論

共有 條評論