⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p.ll1

📁 编译原理-文法等价转换
💻 LL1
📖 第 1 页 / 共 2 页
字号:
[终结符号]
0 $
300 ε
1 and
2 array
3 begin
4 case
5 const
6 div
7 do
8 downto
9 else
10 end
11 file
12 for
13 function
14 goto
15 if
16 in
17 label
18 mod
19 nil
20 not
21 of
22 or
23 procedure
24 program
25 record
26 repeat
27 set
28 then
29 to
30 type
31 until
32 var
33 while
34 with
35 标识符
36 +
37 -
38 *
39 /
40 <
41 <=
42 =
43 <>
44 >=
45 >
46 :=
47 ,
48 ;
49 :
50 '
51 .
52 ..
53 ^
54 (
55 )
56 [
57 ]
58 无正负号整数
59 无正负号实数
60 字符串
61 forward
[LL1文法]
<程序>=<程序首部> ; <程序分程序> .
<程序首部>=program 标识符
<程序分程序>=<分程序>
<标识符表>=标识符 <标识符子表>
<标识符子表>=, 标识符 <标识符子表>|ε
<有正负号数>=<正负号> <无正负号数>|<无正负号数>
<无正负号数>=无正负号整数|无正负号实数
<正负号>=+|-
<分程序>=<标号说明部分> <常量定义部分> <类型定义部分> <变量说明部分>  <过程和函数说明部分> <语句部分>
<标号说明部分>=label <标号> <标号子表> ;|ε
<标号子表>=, 无正负号整数 <标号子表>|ε
<常量定义部分>=const <常量定义> ; <常量定义子表>|ε
<常量定义子表>=<常量定义> ; <常量定义子表>|ε
<常量定义>=标识符 = <常量>
<常量>=<有正负号数>|标识符|字符串
<类型定义部分>=type <类型定义> ; <类型定义子表>|ε
<类型定义子表>=<类型定义> ; <类型定义子表>|ε
<类型定义>=标识符 = <类型>
<类型>=<类型标识符>|<新类型>
<类型标识符>=标识符
<新类型>=<新有序类型>|<新结构类型>|<新指针类型>
<变量说明部分>=var <变量说明> ; <变量说明子表>|ε
<变量说明子表>=<变量说明> ; <变量说明子表>|ε
<变量说明>=<标识符表> : <类型>
<简单类型>=<有序类型>|<实型标识符>
<有序类型>=<新有序类型>|<有序类型标识符>
<有序类型标识符>=<类型标识符>
<新有序类型>=<枚举类型>|<子界类型>
<枚举类型>=( <标识符表> )
<子界类型>=<常量> .. <常量>
<实型标识符>=<类型标识符>
<结构类型>=<新结构类型>|<结构类型标识符>
<结构类型标识符>=<类型标识符>
<新结构类型>=<数组类型>|<记录类型>|<集合类型>|<文件类型>
<数组类型>=array [ <下标类型> <下标子表> ] of <成分类型>
<下标子表>=, <下标类型> <下标子表>|ε
<下标类型>=<有序类型>
<成分类型>=<类型>
<记录类型>=record <域表> end
<域表>=<固定部分> <固定变体部分>|<变体部分>
<固定变体部分>=; <变体部分>|ε
<固定部分>=<记录段> <记录子表> |ε
<记录子表>=; <记录段> <记录子表> |ε
<记录段>=<标识符表> : <类型>
<变体部分>=case <变体选择符> of <变体> <变体子表>
<变体子表>=; <变体> <变体子表>|ε
<变体选择符>=<标志域> : <标志类型>
<变体>=<情况常量表> : ( <域表> )
<标志域>=标识符
<标志类型>=<有序类型标识符>
<集合类型>=set of <基类型>
<基类型>=<有序类型>
<文件类型>=file of <成分类型>
<指针类型>=<新指针类型>|<指针类型标识符>
<指针类型标识符>=<类型标识符>
<新指针类型>=^ <对象类型>
<对象类型>=<类型标识符>
<表达式>=<简单表达式> <简单表达式子式>
<简单表达式子式>=<关系运算符> <简单表达式> <简单表达式子式> |ε
<关系运算符>= = |<>|<|>|<=|>=
<简单表达式>=<正负号> <项> <项子式> |<项> <项子式>
<项子式>=<加减运算符> <项> <项子式>|ε
<加减运算符>=+|-|or
<项>=<因式> <因式子式>
<因式子式>=<乘除运算符> <因式> <因式子式>|ε
<乘除运算符>=*|/|div|mod|and
<因式>=<变量> |<无正负号常量>|<函数命名符>|<集合构造符>|( <表达式> )|not <因式>
<变量>=<整体变量>|<分量变量>|<标识变量>|<缓冲区变量>
<整体变量>=<变量标识符>
<变量标识符>=标识符
<分量变量>=<下标变量>|<域变量>
<下标变量>=<数组变量> [ <下标表达式> <下标表达式子式> ]
<下标表达式子式>=, <下标表达式> <下标表达式子式>|ε
<数组变量>=<变量>
<下标表达式>=<表达式>
<域变量>=<记录变量> . <域标识符>|<域命名标识符>
<记录变量>=<变量>
<域标识符>=标识符
<域命名标识符>=标识符
<缓冲区变量>=<文件变量> ^
<文件变量>=<变量>
<标识变量>=<指针变量> ^
<指针变量>=<变量>
<常量标识符>=标识符
<函数命名符>=<函数标识符> <实在参数表>
<实在参数表>=( <实在参数> <实在参数子表> )|ε
<实在参数子表>=, <实在参数> <实在参数子表>|ε
<实在参数>=<表达式>|<变量>|<过程标识符>|<函数标识符>
<集合构造符>=[ <元素列表> ]
<元素列表>=<元素> <元素列表子表>|ε
<元素列表子表>=, <元素> <元素列表子表>|ε
<元素>=<表达式> <..表达式>
<..表达式>=.. <表达式>|ε
<语句部分>=<复合语句>
<复合语句>=begin <语句序列> end
<语句序列>=<语句> <子语句>
<子语句>=; <语句> <子语句>|ε
<语句>=<标号> : <简单+结构语句> |  <简单+结构语句>
<简单+结构语句>=<简单语句>|<结构语句>
<简单语句>=<空语句>|<赋值语句>|<过程语句>|<转向语句>
<空语句>=ε
<赋值语句>=<变量> := <表达式>
<过程语句>=<过程标识符> <实在参数表>
<转向语句>=goto <标号>
<结构语句>=<复合语句>|<条件语句>|<重复语句>|<开域语句>
<条件语句>=<如果语句>|<情况语句>
<如果语句>=if <布尔表达式> then <语句> <否则部分>
<情况表元素后续>=; <情况表元素> <情况表元素后续>|ε
<情况表达式>=<表达式>
<情况表元素>=<情况常量表> : <语句>
<情况常量表>=<情况常量> <情况常量子表>
<情况常量子表>=<情况常量> , <情况常量子表>|ε
<情况常量>=<常量>
<重复语句>=<直到语句>|<当语句>|<循环语句>
<直到语句>=repeat <语句序列> until <布尔表达式>
<当语句>=while <布尔表达式> do <语句>
<循环语句>=for <循环变量> := <初值> <升降> <终值> do <语句>
<升降>=to |downto
<循环变量>=<整体变量>
<初值>=<表达式>
<终值>=<表达式>
<开域语句>=with <记录变量表> do <语句>
<记录变量表>=<记录变量> <记录变量子表>
<记录变量子表>=, <记录变量> <记录变量子表>|ε
<过程和函数说明部分>=<过程说明> <过程和函数说明部分>|<函数说明> <过程和函数说明部分>|ε
<过程说明>=<过程首部> ; <过程分程序+forward>
<过程分程序+forward>=<过程分程序>| forward
<过程首部>=procedure 标识符 <形式参数表>
<过程标识符>=标识符
<过程标识>=procedure <过程标识符>
<函数说明>=<函数首部> ; <函数分程序+forward>
<函数分程序+forward>=<函数分程序>|forward
<函数首部>=function 标识符 <形式参数表> : <结果类型>
<函数标识符>=标识符
<结果类型>=<简单类型标识符>|<指针类型标识符>
<简单类型标识符>=<类型标识符>
<函数分程序>=<分程序>
<函数标识>=function <函数标识符>
<形式参数表>=( <形式参数段> <形式参数子表> )
<形式参数子表>=; <形式参数段> <形式参数子表>|ε
<形式参数段>= <值参数说明>|<变量参数说明>|<过程参数说明>|<函数参数说明>|<可调节数组参数说明>
<值参数说明>=<标识符表> : <类型标识符>
<变量参数说明>=var <标识符表> : <类型标识符>
<过程参数说明>=<过程首部>
<函数参数说明>=<函数首部>
<可调节数组参数说明>=<值可调节数组说明>|<变量可调节数组说明>
<值可调节数组说明>=<标识符表> : <可调节数组模式>
<变量可调节数组说明>=var <标识符表> : <可调节数组模式>
<下标类型说明>=标识符  .. 标识符  : <有序类型标识符>
<可调节数组模式>=array [ <下标类型说明> <下标类型说明子表> ] of <类型标识符+可调节数组模式>
<下标类型说明子表>=; <下标类型说明> <下标类型说明子表> |ε
<类型标识符+可调节数组模式>=<类型标识符>|<可调节数组模式>
<无正负号常量>=<无正负号数>|字符串|<常量标识符>|nil
<标号>=无正负号整数
<布尔表达式>=<表达式>
<否则部分>=else <语句>|ε
<情况语句>=case <情况表达式> of <情况表元素> <情况表元素后续>
<过程分程序>=<分程序>
[LL1分析表]
program 
$ 
program 
; 
label const type var procedure function 
. 
标识符 
: ) 
, 
: ) 
: ) 
+ - 
无正负号整数 无正负号实数 
.. ; , ] end ) 标识符 字符串 无正负号整数 无正负号实数 + - : 
无正负号整数 
无正负号实数 
.. ; , ] end ) 标识符 字符串 无正负号整数 无正负号实数 + - : * / div mod and or = <> < > <= >= else until of to downto do then 
+ 
- 
无正负号整数 无正负号实数 ( not 标识符 [ 字符串 nil 
label ε const type var procedure function begin 
. procedure function begin 
label 
const type var procedure function begin 
const type var procedure function begin 
, 
; 
; 
const 
type var procedure function begin 
type var procedure function begin 
标识符 
type var procedure function begin 
type var procedure function begin 
标识符 
; 
无正负号整数 无正负号实数 + - 
标识符 
字符串 
.. ; , ] end ) 标识符 字符串 无正负号整数 无正负号实数 + - : 
type 
var procedure function begin 
var procedure function begin 
标识符 
var procedure function begin 
var procedure function begin 
标识符 
; 
标识符 
( 标识符 字符串 无正负号整数 无正负号实数 + - array record set file ^ 
; end ) 
标识符 
; , ] end ) of 
( 标识符 字符串 无正负号整数 无正负号实数 + - 
array record set file 
^ 
; end ) 
var 
procedure function begin 
procedure function begin 
标识符 
procedure function begin 
procedure function begin 
标识符 
; 
标识符 ( 字符串 无正负号整数 无正负号实数 + - 
标识符 

( 标识符 字符串 无正负号整数 无正负号实数 + - 
标识符 
, ] ; end ) 
标识符 
, ] of ; end ) 
( 
标识符 字符串 无正负号整数 无正负号实数 + - 
; , ] end ) 
( 
; , ] end ) 
标识符 字符串 无正负号整数 无正负号实数 + - 
; , ] end ) 
标识符 

array record set file 
标识符 

标识符 

array 
record 
set 
file 
; end ) 
array 
; end ) 
, 
] 
] 
标识符 ( 字符串 无正负号整数 无正负号实数 + - 
, ] 
标识符 ( 字符串 无正负号整数 无正负号实数 + - array record set file ^ 
; end ) 
record 
; end ) 
ε 标识符 ; end ) 
case 
end ) 
; 
end ) 
end ) 
标识符 
; end ) 
; end ) 
; 
; end ) 
; end ) 
标识符 
; end ) 
case 
end ) 
; 
end ) 
end ) 
标识符 
of 
标识符 字符串 无正负号整数 无正负号实数 + - 
; end ) 
标识符 
: 
标识符 
of 
set 
; end ) 
标识符 ( 字符串 无正负号整数 无正负号实数 + - 
; end ) 
file 
; end ) 
^ 
标识符 

标识符 
; ) 
^ 
; end ) 
标识符 
; end ) 
+ - ( not 标识符 [ 字符串 nil 无正负号整数 无正负号实数 
) .. , ] ; else end until of to downto do then 
= <> < > <= >= 
) .. , ] ; else end until of to downto do then 
) .. , ] ; else end until of to downto do then 
= 
<> 
< 
> 
<= 
>= 
+ - ( not 标识符 [ 字符串 nil 无正负号整数 无正负号实数 
+ - 
( not 标识符 [ 字符串 nil 无正负号整数 无正负号实数 
= <> < > <= >= ) .. , ] ; else end until of to downto do then 
+ - or 
= <> < > <= >= ) .. , ] ; else end until of to downto do then 
= <> < > <= >= ) .. , ] ; else end until of to downto do then 
+ 
- 
or 
( not 标识符 [ 字符串 nil 无正负号整数 无正负号实数 
( not 标识符 [ 字符串 nil 无正负号整数 无正负号实数 
+ - or = <> < > <= >= ) .. , ] ; else end until of to downto do then 
* / div mod and 
+ - or = <> < > <= >= ) .. , ] ; else end until of to downto do then 
+ - or = <> < > <= >= ) .. , ] ; else end until of to downto do then 
* 
/ 
div 
mod 
and 
( not 标识符 [ 字符串 nil 无正负号整数 无正负号实数 
标识符 
字符串 nil 无正负号整数 无正负号实数 标识符 
标识符 
[ 
( 
not 
* / div mod and + - or = <> < > <= >= ) .. , ] ; else end until of to downto do then 
标识符 
标识符 
标识符 
标识符 
:= * / div mod and + - or = <> < > <= >= ) .. [ , ] . ^ ; else end until of to downto do then 
标识符 
:= * / div mod and + - or = <> < > <= >= ) .. [ , ] . ^ ; else end until of to downto do then 
标识符 
:= * / div mod and + - or = <> < > <= >= ) .. [ , ] . ^ ; else end until of to downto do then 
标识符 
标识符 
:= * / div mod and + - or = <> < > <= >= ) .. [ , ] . ^ ; else end until of to downto do then 
标识符 
:= * / div mod and + - or = <> < > <= >= ) .. [ , ] . ^ ; else end until of to downto do then 
, 
] 
] 
标识符 
[ 
+ - ( not 标识符 [ 字符串 nil 无正负号整数 无正负号实数 
, ] 
标识符 
标识符 
:= * / div mod and + - or = <> < > <= >= ) .. [ , ] . ^ ; else end until of to downto do then 
标识符 
. , do 
标识符 
:= * / div mod and + - or = <> < > <= >= ) .. [ , ] . ^ ; else end until of to downto do then 
标识符 
:= * / div mod and + - or = <> < > <= >= ) .. [ , ] . ^ ; else end until of to downto do then 
标识符 
:= * / div mod and + - or = <> < > <= >= ) .. [ , ] . ^ ; else end until of to downto do then 
标识符 
^ 
标识符 
:= * / div mod and + - or = <> < > <= >= ) .. [ , ] . ^ ; else end until of to downto do then 
标识符 
^ 
标识符 
* / div mod and + - or = <> < > <= >= ) .. , ] ; else end until of to downto do then 
标识符 
* / div mod and + - or = <> < > <= >= ) .. , ] ; else end until of to downto do then 
( 
* / div mod and + - or = <> < > <= >= ) .. , ] ; else end until of to downto do then 
* / div mod and + - or = <> < > <= >= ) .. , ] ; else end until of to downto do then 
, 
) 
) 
+ - ( not 标识符 [ 字符串 nil 无正负号整数 无正负号实数 
标识符 
标识符 
标识符 
, ) 
[ 
* / div mod and + - or = <> < > <= >= ) .. , ] ; else end until of to downto do then 
+ - ( not 标识符 [ 字符串 nil 无正负号整数 无正负号实数 
] 
] 
, 
] 
] 
+ - ( not 标识符 [ 字符串 nil 无正负号整数 无正负号实数 
, ] 
.. 
, ] 
, ] 
begin 
. procedure function begin 
begin 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -