我想的是:
首先‘<’和‘>’是特殊符号,用来指定某种单词,
‘\’是转义字符,‘\\’表示‘\’,‘\<’表示字符‘<’,‘\>’表示字符‘>’
然后输入规则(共两列):
列1 列2
关键字 int
double
数字 1
2
3
4
5
6
7
8
9
0
<数字>1
<数字>2
<数字>3
<数字>4
<数字>5
<数字>6
<数字>7
<数字>8
<数字>9
<数字>0
...
请问要怎么做呢?
能不能给我说下思路呢?
13 个解决方案
#1
你说的这个是词法分析而不是语法分析
#2
编译原理,递归下降分析
#3
对不起,是写错了,
请问下要怎么做呢?
#4
不知道你说的“不能自定义语法”是什么意思。
词法分析无非就是构造NFA DFA,任何一本编译原理上都有。
词法分析无非就是构造NFA DFA,任何一本编译原理上都有。
#5
但是有些地方还是想不太明白,就是我可以分析出<数字>0这种的词法,但是int这种的怎么分析呢?简单的比较?
#6
但是有些地方还是想不太明白,就是我可以分析出<数字>0这种的词法,但是int这种的怎么分析呢?简单的比较?
还有就是我在网上看到的大多数都是直接定义好的,没见到词法分析的代码,都是直接拿定义好的词法用的
#7
如果你不懂NFA,根本看不懂词法分析的代码。
#8
不知道你说的“不能自定义语法”是什么意思。
词法分析无非就是构造NFA DFA,任何一本编译原理上都有。
但是有些地方还是想不太明白,就是我可以分析出<数字>0这种的词法,但是int这种的怎么分析呢?简单的比较?
还有就是我在网上看到的大多数都是直接定义好的,没见到词法分析的代码,都是直接拿定义好的词法用的
如果你不懂NFA,根本看不懂词法分析的代码。
我看过NFA了,但是要怎么分析int这种的关键字呢,要怎么做才能让它能用?
#9
int
就是
i-n-t-分隔符
数字就是
数字(+)-分隔符
就是
i-n-t-分隔符
数字就是
数字(+)-分隔符
#10
int
就是
i-n-t-分隔符
数字就是
数字(+)-分隔符
还是不理解,
如果我有int和double,还有可能有integer,do等,那么我应该怎么确定待比较的字符串要和哪些进行比较呢?
还有就是状态应该怎么用代码表示呢?各个状态在代码中是什么呢?
#11
int
就是
i-n-t-分隔符
数字就是
数字(+)-分隔符
while((ch=getchar())!=EOF)
switch(state)
case 1 :if ch=="/",state=2,break;
case 2: if ch=="*",state=3
else state=1;break;
case 3:..........
case 4:..........
http://www.cnblogs.com/yanlingyin/archive/2012/04/17/2451717.html
我看了这篇文章,这篇文章写的就是没法改变,要是想改变要怎么办呢?
#12
LEX+YACC
FLEX+BISON
FLEX+BISON
#13
结贴结贴结贴
#1
你说的这个是词法分析而不是语法分析
#2
编译原理,递归下降分析
#3
你说的这个是词法分析而不是语法分析
对不起,是写错了,
请问下要怎么做呢?
#4
不知道你说的“不能自定义语法”是什么意思。
词法分析无非就是构造NFA DFA,任何一本编译原理上都有。
词法分析无非就是构造NFA DFA,任何一本编译原理上都有。
#5
编译原理,递归下降分析
但是有些地方还是想不太明白,就是我可以分析出<数字>0这种的词法,但是int这种的怎么分析呢?简单的比较?
#6
不知道你说的“不能自定义语法”是什么意思。
词法分析无非就是构造NFA DFA,任何一本编译原理上都有。
但是有些地方还是想不太明白,就是我可以分析出<数字>0这种的词法,但是int这种的怎么分析呢?简单的比较?
还有就是我在网上看到的大多数都是直接定义好的,没见到词法分析的代码,都是直接拿定义好的词法用的
#7
不知道你说的“不能自定义语法”是什么意思。
词法分析无非就是构造NFA DFA,任何一本编译原理上都有。
但是有些地方还是想不太明白,就是我可以分析出<数字>0这种的词法,但是int这种的怎么分析呢?简单的比较?
还有就是我在网上看到的大多数都是直接定义好的,没见到词法分析的代码,都是直接拿定义好的词法用的
如果你不懂NFA,根本看不懂词法分析的代码。
#8
不知道你说的“不能自定义语法”是什么意思。
词法分析无非就是构造NFA DFA,任何一本编译原理上都有。
但是有些地方还是想不太明白,就是我可以分析出<数字>0这种的词法,但是int这种的怎么分析呢?简单的比较?
还有就是我在网上看到的大多数都是直接定义好的,没见到词法分析的代码,都是直接拿定义好的词法用的
如果你不懂NFA,根本看不懂词法分析的代码。
我看过NFA了,但是要怎么分析int这种的关键字呢,要怎么做才能让它能用?
#9
int
就是
i-n-t-分隔符
数字就是
数字(+)-分隔符
就是
i-n-t-分隔符
数字就是
数字(+)-分隔符
#10
int
就是
i-n-t-分隔符
数字就是
数字(+)-分隔符
还是不理解,
如果我有int和double,还有可能有integer,do等,那么我应该怎么确定待比较的字符串要和哪些进行比较呢?
还有就是状态应该怎么用代码表示呢?各个状态在代码中是什么呢?
#11
int
就是
i-n-t-分隔符
数字就是
数字(+)-分隔符
while((ch=getchar())!=EOF)
switch(state)
case 1 :if ch=="/",state=2,break;
case 2: if ch=="*",state=3
else state=1;break;
case 3:..........
case 4:..........
http://www.cnblogs.com/yanlingyin/archive/2012/04/17/2451717.html
我看了这篇文章,这篇文章写的就是没法改变,要是想改变要怎么办呢?
#12
LEX+YACC
FLEX+BISON
FLEX+BISON
#13
结贴结贴结贴