FIRST集和FOLLOW集的求法

FIRST集

$FIRST集合$

------------------------------------------------------------------------

$ S\rightarrow a..., \\
a \ \ \in FIRST(S)\\
$

------------------------------------------------------------------------

$S\rightarrow \epsilon, \\
\epsilon \in FIRST(S)\\
$

------------------------------------------------------------------------

$S\rightarrow Y_{1}Y_{2}Y_{3}...Y_{N},\\
FIRST(Y_{1})/\epsilon \subset FIRST(S) \\
if \ \ \epsilon \in FIRST(Y_{1})\\
FIRST(Y_{2})/\epsilon \subset FIRST(S)\\
\\if \ \ \epsilon \in FIRST(Y_{1}),\epsilon \ in FIRST(Y_{2})\\
FIRST(Y{3})/\epsilon \subset FIRST(S)\\
if \ \ \epsilon \in FIRST(Y_{1}),\epsilon \ in FIRST(Y_{2}),\epsilon \in FIRST(Y_{3})\\
FIRST(Y_{4})/\epsilon \subset FIRST(S)\\
.........以此类推\\
if \ \ \epsilon \in FIRST(Y_{1}),\epsilon \ in FIRST(Y_{2}),\epsilon \in FIRST(Y_{3}),...\epsilon \in FIRST(Y_{n})\\
\epsilon \in FIRST(S)\\
\\
\\
$

FOLLOW集

$FOLLOW集合$

------------------------------------------------------------------------
$A->xB\\
FOLLOW(A) \subset FOLLOW(B)\\
$

------------------------------------------------------------------------

$A->xBY_{1}Y_{2}...Y_{n}\\
FIRST(Y_{1}) \subset FOLLOW(B)\\
if \ \ \epsilon \in FIRST(Y_{1})\\
FIRST(Y_{2}) \subset FOLLOW(B)\\
if( \\ \epsilon \in FIRST(Y_{1}), \epsilon \in FIRST(Y_{2})\\
FIRST(Y_{3}) \subset FOLLOW(B)\\
.....以此类推\\
if \ \ \epsilon \in FIRST(Y_{1}),\epsilon \ in FIRST(Y_{2}),\epsilon \in FIRST(Y_{3}),...\epsilon \in FIRST(Y_{n})\\
\epsilon \in FIRST(S)\\
FOLLOW(A) \subset FOLLOW(B)\\
$

时间: 2024-11-06 22:46:18

FIRST集和FOLLOW集的求法的相关文章

求FIRST集和FOLLOW集

花了点时间弄了个大概,希望对和我一样的人有所帮助. 文法如下: E -> TE'E' -> +TE'|εT -> FT'T' -> *FT'|εF -> (E)|id ---------------------------------------------------------------------------------------------------------------------------------------------------- FIRST集:

FIRST集和FOLLOW集

省略号代表其他相关产生式得出的终结符号,一开始的时候,省略号里面是没有的 求FIRST集 情况壹  如果A只在→的右边出现,那么FIRST(A)={A},例子M→α,FIRST(α)={α} 情况貳  对于A→BCDEFG, 一 如果无B→ε,那么FIRST(A)={……}∪FIRST(B),接着求FIRST(B) 二 如果有B→ε,那么FIRST(A)={……}∪(FIRST(B)-{ε})∪FIRST(CDEFG),接着分别求FIRST(B)-{ε}.FIRST(CDEFG) 情况叁 如果G

FIRST集和FOLLOW集求法

    龙书算法: First: (1).如果X是终结符,那么First(X) = X; (2).如果X是非终结符,且XàY1Y2......Yk是一个产生式,其中k>=1;那么如果对于某个I, a在First(Yi)中,且#(空串)在所有的First(Y1)-..First(Yi-1)中,就吧a加入到First(X)中. (3).如果Xà#(空串)是一个产生式,那么将#加入到First(X)中. Follow: (1).将$放入到Follow(S)中,其中S是开始符号,而$是输入右端结束的标记

怎样求FIRST集与FOLLOW集

一,要知道什么是终结符和非终结符. 终结符:通俗的说就是不能单独出现在推导式左边的符号,也就是说终结符不能再进行推导. 非终结符:不是终结符的都是非终结符.(非男即女,呵呵) 如:A-->B,则A是非终结符. (一般书上终结符用小写,非终结符用大写.) 二,文法产生语言句子的基本思想:从识别符号(开始符)开始,把当前产生的符号串中的非终结符替换为相应规则右部的符号串,直到全部由终结符组成. 三,FIRST集求法 First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集

编译原理-First集合和Follow集合的求法

First集合的求法:    First集合最终是对产生式右部的字符串而言的,但其关键是求出非终结符的First集合,由于终结符的First集合就是它自己,所以求出非终结符的First集合后,就可很直观地得到每个字符串的First集合.1.  直接收取:对形如U-a…的产生式(其中a是终结符),把a收入到First(U)中2.  反复传送:对形入U-P…的产生式(其中P是非终结符),应把First(P)中的全部内容传送到First(U)中. Follow集合的求法:    Follow集合是针对

随机切分csv训练集和测试集

使用numpy切分训练集和测试集 觉得有用的话,欢迎一起讨论相互学习~Follow Me 序言 在机器学习的任务中,时常需要将一个完整的数据集切分为训练集和测试集.此处我们使用numpy完成这个任务. iris数据集中有150条数据,我们将120条数据整合为训练集,将30条数据整合为测试集. iris.csv下载 程序 import csv import os import numpy as np '''将iris.csv中的数据分成train_iris和test_iris两个csv文件,其中t

将数据划分为训练集和测试集;缩放特征区间

导入葡萄酒数据: 1 import numpy as np 2 import pandas as pd 3 4 df_wine = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data", header=None) 5 df_wine.columns = ["class label", "alcohol", 6 "mal

sklearn——train_test_split 随机划分训练集和测试集

sklearn--train_test_split 随机划分训练集和测试集 sklearn.model_selection.train_test_split随机划分训练集和测试集 官网文档:http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html 一般形式: train_test_split是交叉验证中常用的函数,功能是从样本中随机的按比例选取train data和

sklearn获得某个参数的不同取值在训练集和测试集上的表现的曲线刻画

from sklearn.svm import SVC from sklearn.datasets import make_classification import numpy as np X,y = make_classification() def plot_validation_curve(estimator,X,y,param_name="gamma", param_range=np.logspace(-6,-1,5),cv=5,scoring="accuracy&