Skip to content

Latest commit

 

History

History
1412 lines (1389 loc) · 29.8 KB

LexAnalyse.md

File metadata and controls

1412 lines (1389 loc) · 29.8 KB

词法分析

1.说明

将在预处理中经过处理的c语言源程序作为输入,生成一个text.token.xml文件,其中包含了

分词的结果。

2.实现效果

待处理的c语言程序:

int main(int a, int b){    



int m = 5;



return a + b;
}

struct jiegou{
int struct_son;
}

void test(int m){
char char1 = 'b'; 
char char2 = '\'';
string _kk = "aaaaaaaaa";
string _kk1 = "5555\"\b\n";

int int_8 = 0222;
float float_8 = 05.77;
float float_10 = -10.22;
float int_16 = 0x11af;
double science_num = 11e2;
long long_int = 1155L;

int a,b,c;
c=a+b;
c++;
c+=b;
c=a-b;
c-=b;
c--
c = c*1;
c*=a;
c = a%b;
c = a/b;
c = a>b;
c = a>>2;
c = a&b;
struct S;
S.struct_son

printf("zhende%d\n",m);
return m;
}

void test_wrong(){

string haha = "xxxxx
xx";
char b = 'dddd';



}

生成的xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project name="test.token.xml">
  <tokens>
    <token>
      <number>1</number>
      <value>int</value>
      <type>关键字</type>
      <line>1</line>
      <valid>true</valid>
    </token>
    <token>
      <number>2</number>
      <value>main</value>
      <type>标识符</type>
      <line>1</line>
      <valid>true</valid>
    </token>
    <token>
      <number>3</number>
      <value>(</value>
      <type>分隔符</type>
      <line>1</line>
      <valid>true</valid>
    </token>
    <token>
      <number>4</number>
      <value>int</value>
      <type>关键字</type>
      <line>1</line>
      <valid>true</valid>
    </token>
    <token>
      <number>5</number>
      <value>a</value>
      <type>标识符</type>
      <line>1</line>
      <valid>true</valid>
    </token>
    <token>
      <number>6</number>
      <value>,</value>
      <type>分隔符</type>
      <line>1</line>
      <valid>true</valid>
    </token>
    <token>
      <number>7</number>
      <value>int</value>
      <type>关键字</type>
      <line>1</line>
      <valid>true</valid>
    </token>
    <token>
      <number>8</number>
      <value>b</value>
      <type>标识符</type>
      <line>1</line>
      <valid>true</valid>
    </token>
    <token>
      <number>9</number>
      <value>)</value>
      <type>分隔符</type>
      <line>1</line>
      <valid>true</valid>
    </token>
    <token>
      <number>10</number>
      <value>{</value>
      <type>分隔符</type>
      <line>1</line>
      <valid>true</valid>
    </token>
    <token>
      <number>11</number>
      <value>int</value>
      <type>关键字</type>
      <line>5</line>
      <valid>true</valid>
    </token>
    <token>
      <number>12</number>
      <value>m</value>
      <type>标识符</type>
      <line>5</line>
      <valid>true</valid>
    </token>
    <token>
      <number>13</number>
      <value>=</value>
      <type>运算符</type>
      <line>5</line>
      <valid>true</valid>
    </token>
    <token>
      <number>14</number>
      <value>5</value>
      <type>十进制整数</type>
      <line>5</line>
      <valid>true</valid>
    </token>
    <token>
      <number>15</number>
      <value>;</value>
      <type>分隔符</type>
      <line>5</line>
      <valid>true</valid>
    </token>
    <token>
      <number>16</number>
      <value>return</value>
      <type>关键字</type>
      <line>9</line>
      <valid>true</valid>
    </token>
    <token>
      <number>17</number>
      <value>a</value>
      <type>标识符</type>
      <line>9</line>
      <valid>true</valid>
    </token>
    <token>
      <number>18</number>
      <value>+</value>
      <type>运算符</type>
      <line>9</line>
      <valid>true</valid>
    </token>
    <token>
      <number>19</number>
      <value>b</value>
      <type>标识符</type>
      <line>9</line>
      <valid>true</valid>
    </token>
    <token>
      <number>20</number>
      <value>;</value>
      <type>分隔符</type>
      <line>9</line>
      <valid>true</valid>
    </token>
    <token>
      <number>21</number>
      <value>}</value>
      <type>分隔符</type>
      <line>10</line>
      <valid>true</valid>
    </token>
    <token>
      <number>22</number>
      <value>struct</value>
      <type>关键字</type>
      <line>12</line>
      <valid>true</valid>
    </token>
    <token>
      <number>23</number>
      <value>jiegou</value>
      <type>标识符</type>
      <line>12</line>
      <valid>true</valid>
    </token>
    <token>
      <number>24</number>
      <value>{</value>
      <type>分隔符</type>
      <line>12</line>
      <valid>true</valid>
    </token>
    <token>
      <number>25</number>
      <value>int</value>
      <type>关键字</type>
      <line>13</line>
      <valid>true</valid>
    </token>
    <token>
      <number>26</number>
      <value>struct_son</value>
      <type>标识符</type>
      <line>13</line>
      <valid>true</valid>
    </token>
    <token>
      <number>27</number>
      <value>;</value>
      <type>分隔符</type>
      <line>13</line>
      <valid>true</valid>
    </token>
    <token>
      <number>28</number>
      <value>}</value>
      <type>分隔符</type>
      <line>14</line>
      <valid>true</valid>
    </token>
    <token>
      <number>29</number>
      <value>void</value>
      <type>关键字</type>
      <line>16</line>
      <valid>true</valid>
    </token>
    <token>
      <number>30</number>
      <value>test</value>
      <type>标识符</type>
      <line>16</line>
      <valid>true</valid>
    </token>
    <token>
      <number>31</number>
      <value>(</value>
      <type>分隔符</type>
      <line>16</line>
      <valid>true</valid>
    </token>
    <token>
      <number>32</number>
      <value>int</value>
      <type>关键字</type>
      <line>16</line>
      <valid>true</valid>
    </token>
    <token>
      <number>33</number>
      <value>m</value>
      <type>标识符</type>
      <line>16</line>
      <valid>true</valid>
    </token>
    <token>
      <number>34</number>
      <value>)</value>
      <type>分隔符</type>
      <line>16</line>
      <valid>true</valid>
    </token>
    <token>
      <number>35</number>
      <value>{</value>
      <type>分隔符</type>
      <line>16</line>
      <valid>true</valid>
    </token>
    <token>
      <number>36</number>
      <value>char</value>
      <type>关键字</type>
      <line>17</line>
      <valid>true</valid>
    </token>
    <token>
      <number>37</number>
      <value>char1</value>
      <type>标识符</type>
      <line>17</line>
      <valid>true</valid>
    </token>
    <token>
      <number>38</number>
      <value>=</value>
      <type>运算符</type>
      <line>17</line>
      <valid>true</valid>
    </token>
    <token>
      <number>39</number>
      <value>'b'</value>
      <type>字符常量</type>
      <line>17</line>
      <valid>true</valid>
    </token>
    <token>
      <number>40</number>
      <value>;</value>
      <type>分隔符</type>
      <line>17</line>
      <valid>true</valid>
    </token>
    <token>
      <number>41</number>
      <value>char</value>
      <type>关键字</type>
      <line>18</line>
      <valid>true</valid>
    </token>
    <token>
      <number>42</number>
      <value>char2</value>
      <type>标识符</type>
      <line>18</line>
      <valid>true</valid>
    </token>
    <token>
      <number>43</number>
      <value>=</value>
      <type>运算符</type>
      <line>18</line>
      <valid>true</valid>
    </token>
    <token>
      <number>44</number>
      <value>'''</value>
      <type>转义字符常量</type>
      <line>18</line>
      <valid>true</valid>
    </token>
    <token>
      <number>45</number>
      <value>;</value>
      <type>分隔符</type>
      <line>18</line>
      <valid>true</valid>
    </token>
    <token>
      <number>46</number>
      <value>string</value>
      <type>标识符</type>
      <line>19</line>
      <valid>true</valid>
    </token>
    <token>
      <number>47</number>
      <value>_kk</value>
      <type>标识符</type>
      <line>19</line>
      <valid>true</valid>
    </token>
    <token>
      <number>48</number>
      <value>=</value>
      <type>运算符</type>
      <line>19</line>
      <valid>true</valid>
    </token>
    <token>
      <number>49</number>
      <value>"aaaaaaaaa"</value>
      <type>字符串常量</type>
      <line>19</line>
      <valid>true</valid>
    </token>
    <token>
      <number>50</number>
      <value>;</value>
      <type>分隔符</type>
      <line>19</line>
      <valid>true</valid>
    </token>
    <token>
      <number>51</number>
      <value>string</value>
      <type>标识符</type>
      <line>20</line>
      <valid>true</valid>
    </token>
    <token>
      <number>52</number>
      <value>_kk1</value>
      <type>标识符</type>
      <line>20</line>
      <valid>true</valid>
    </token>
    <token>
      <number>53</number>
      <value>=</value>
      <type>运算符</type>
      <line>20</line>
      <valid>true</valid>
    </token>
    <token>
      <number>54</number>
      <value>"5555\"\b\n"</value>
      <type>字符串常量</type>
      <line>20</line>
      <valid>true</valid>
    </token>
    <token>
      <number>55</number>
      <value>;</value>
      <type>分隔符</type>
      <line>20</line>
      <valid>true</valid>
    </token>
    <token>
      <number>56</number>
      <value>int</value>
      <type>关键字</type>
      <line>22</line>
      <valid>true</valid>
    </token>
    <token>
      <number>57</number>
      <value>int_8</value>
      <type>标识符</type>
      <line>22</line>
      <valid>true</valid>
    </token>
    <token>
      <number>58</number>
      <value>=</value>
      <type>运算符</type>
      <line>22</line>
      <valid>true</valid>
    </token>
    <token>
      <number>59</number>
      <value>0222</value>
      <type>八进制整数</type>
      <line>22</line>
      <valid>true</valid>
    </token>
    <token>
      <number>60</number>
      <value>;</value>
      <type>分隔符</type>
      <line>22</line>
      <valid>true</valid>
    </token>
    <token>
      <number>61</number>
      <value>float</value>
      <type>关键字</type>
      <line>23</line>
      <valid>true</valid>
    </token>
    <token>
      <number>62</number>
      <value>float_8</value>
      <type>标识符</type>
      <line>23</line>
      <valid>true</valid>
    </token>
    <token>
      <number>63</number>
      <value>=</value>
      <type>运算符</type>
      <line>23</line>
      <valid>true</valid>
    </token>
    <token>
      <number>64</number>
      <value>05.77</value>
      <type>浮点数</type>
      <line>23</line>
      <valid>true</valid>
    </token>
    <token>
      <number>65</number>
      <value>;</value>
      <type>分隔符</type>
      <line>23</line>
      <valid>true</valid>
    </token>
    <token>
      <number>66</number>
      <value>float</value>
      <type>关键字</type>
      <line>24</line>
      <valid>true</valid>
    </token>
    <token>
      <number>67</number>
      <value>float_10</value>
      <type>标识符</type>
      <line>24</line>
      <valid>true</valid>
    </token>
    <token>
      <number>68</number>
      <value>=</value>
      <type>运算符</type>
      <line>24</line>
      <valid>true</valid>
    </token>
    <token>
      <number>69</number>
      <value>-</value>
      <type>运算符</type>
      <line>24</line>
      <valid>true</valid>
    </token>
    <token>
      <number>70</number>
      <value>10.22</value>
      <type>浮点数</type>
      <line>24</line>
      <valid>true</valid>
    </token>
    <token>
      <number>71</number>
      <value>;</value>
      <type>分隔符</type>
      <line>24</line>
      <valid>true</valid>
    </token>
    <token>
      <number>72</number>
      <value>float</value>
      <type>关键字</type>
      <line>25</line>
      <valid>true</valid>
    </token>
    <token>
      <number>73</number>
      <value>int_16</value>
      <type>标识符</type>
      <line>25</line>
      <valid>true</valid>
    </token>
    <token>
      <number>74</number>
      <value>=</value>
      <type>运算符</type>
      <line>25</line>
      <valid>true</valid>
    </token>
    <token>
      <number>75</number>
      <value>011af</value>
      <type>十六进制整数</type>
      <line>25</line>
      <valid>true</valid>
    </token>
    <token>
      <number>76</number>
      <value>;</value>
      <type>分隔符</type>
      <line>25</line>
      <valid>true</valid>
    </token>
    <token>
      <number>77</number>
      <value>double</value>
      <type>关键字</type>
      <line>26</line>
      <valid>true</valid>
    </token>
    <token>
      <number>78</number>
      <value>science_num</value>
      <type>标识符</type>
      <line>26</line>
      <valid>true</valid>
    </token>
    <token>
      <number>79</number>
      <value>=</value>
      <type>运算符</type>
      <line>26</line>
      <valid>true</valid>
    </token>
    <token>
      <number>80</number>
      <value>11e2</value>
      <type>浮点数</type>
      <line>26</line>
      <valid>true</valid>
    </token>
    <token>
      <number>81</number>
      <value>;</value>
      <type>分隔符</type>
      <line>26</line>
      <valid>true</valid>
    </token>
    <token>
      <number>82</number>
      <value>long</value>
      <type>关键字</type>
      <line>27</line>
      <valid>true</valid>
    </token>
    <token>
      <number>83</number>
      <value>long_int</value>
      <type>标识符</type>
      <line>27</line>
      <valid>true</valid>
    </token>
    <token>
      <number>84</number>
      <value>=</value>
      <type>运算符</type>
      <line>27</line>
      <valid>true</valid>
    </token>
    <token>
      <number>85</number>
      <value>1155L</value>
      <type>十进制长整型</type>
      <line>27</line>
      <valid>true</valid>
    </token>
    <token>
      <number>86</number>
      <value>;</value>
      <type>分隔符</type>
      <line>27</line>
      <valid>true</valid>
    </token>
    <token>
      <number>87</number>
      <value>int</value>
      <type>关键字</type>
      <line>29</line>
      <valid>true</valid>
    </token>
    <token>
      <number>88</number>
      <value>a</value>
      <type>标识符</type>
      <line>29</line>
      <valid>true</valid>
    </token>
    <token>
      <number>89</number>
      <value>,</value>
      <type>分隔符</type>
      <line>29</line>
      <valid>true</valid>
    </token>
    <token>
      <number>90</number>
      <value>b</value>
      <type>标识符</type>
      <line>29</line>
      <valid>true</valid>
    </token>
    <token>
      <number>91</number>
      <value>,</value>
      <type>分隔符</type>
      <line>29</line>
      <valid>true</valid>
    </token>
    <token>
      <number>92</number>
      <value>c</value>
      <type>标识符</type>
      <line>29</line>
      <valid>true</valid>
    </token>
    <token>
      <number>93</number>
      <value>;</value>
      <type>分隔符</type>
      <line>29</line>
      <valid>true</valid>
    </token>
    <token>
      <number>94</number>
      <value>c</value>
      <type>标识符</type>
      <line>30</line>
      <valid>true</valid>
    </token>
    <token>
      <number>95</number>
      <value>=</value>
      <type>运算符</type>
      <line>30</line>
      <valid>true</valid>
    </token>
    <token>
      <number>96</number>
      <value>a</value>
      <type>标识符</type>
      <line>30</line>
      <valid>true</valid>
    </token>
    <token>
      <number>97</number>
      <value>+</value>
      <type>运算符</type>
      <line>30</line>
      <valid>true</valid>
    </token>
    <token>
      <number>98</number>
      <value>b</value>
      <type>标识符</type>
      <line>30</line>
      <valid>true</valid>
    </token>
    <token>
      <number>99</number>
      <value>;</value>
      <type>分隔符</type>
      <line>30</line>
      <valid>true</valid>
    </token>
    <token>
      <number>100</number>
      <value>c</value>
      <type>标识符</type>
      <line>31</line>
      <valid>true</valid>
    </token>
    <token>
      <number>101</number>
      <value>++</value>
      <type>运算符</type>
      <line>31</line>
      <valid>true</valid>
    </token>
    <token>
      <number>102</number>
      <value>;</value>
      <type>分隔符</type>
      <line>31</line>
      <valid>true</valid>
    </token>
    <token>
      <number>103</number>
      <value>c</value>
      <type>标识符</type>
      <line>32</line>
      <valid>true</valid>
    </token>
    <token>
      <number>104</number>
      <value>+=</value>
      <type>运算符</type>
      <line>32</line>
      <valid>true</valid>
    </token>
    <token>
      <number>105</number>
      <value>b</value>
      <type>标识符</type>
      <line>32</line>
      <valid>true</valid>
    </token>
    <token>
      <number>106</number>
      <value>;</value>
      <type>分隔符</type>
      <line>32</line>
      <valid>true</valid>
    </token>
    <token>
      <number>107</number>
      <value>c</value>
      <type>标识符</type>
      <line>33</line>
      <valid>true</valid>
    </token>
    <token>
      <number>108</number>
      <value>=</value>
      <type>运算符</type>
      <line>33</line>
      <valid>true</valid>
    </token>
    <token>
      <number>109</number>
      <value>a</value>
      <type>标识符</type>
      <line>33</line>
      <valid>true</valid>
    </token>
    <token>
      <number>110</number>
      <value>-</value>
      <type>运算符</type>
      <line>33</line>
      <valid>true</valid>
    </token>
    <token>
      <number>111</number>
      <value>b</value>
      <type>标识符</type>
      <line>33</line>
      <valid>true</valid>
    </token>
    <token>
      <number>112</number>
      <value>;</value>
      <type>分隔符</type>
      <line>33</line>
      <valid>true</valid>
    </token>
    <token>
      <number>113</number>
      <value>c</value>
      <type>标识符</type>
      <line>34</line>
      <valid>true</valid>
    </token>
    <token>
      <number>114</number>
      <value>-=</value>
      <type>运算符</type>
      <line>34</line>
      <valid>true</valid>
    </token>
    <token>
      <number>115</number>
      <value>b</value>
      <type>标识符</type>
      <line>34</line>
      <valid>true</valid>
    </token>
    <token>
      <number>116</number>
      <value>;</value>
      <type>分隔符</type>
      <line>34</line>
      <valid>true</valid>
    </token>
    <token>
      <number>117</number>
      <value>c</value>
      <type>标识符</type>
      <line>35</line>
      <valid>true</valid>
    </token>
    <token>
      <number>118</number>
      <value>--</value>
      <type>运算符</type>
      <line>35</line>
      <valid>true</valid>
    </token>
    <token>
      <number>119</number>
      <value>c</value>
      <type>标识符</type>
      <line>36</line>
      <valid>true</valid>
    </token>
    <token>
      <number>120</number>
      <value>=</value>
      <type>运算符</type>
      <line>36</line>
      <valid>true</valid>
    </token>
    <token>
      <number>121</number>
      <value>c</value>
      <type>标识符</type>
      <line>36</line>
      <valid>true</valid>
    </token>
    <token>
      <number>122</number>
      <value>*</value>
      <type>运算符</type>
      <line>36</line>
      <valid>true</valid>
    </token>
    <token>
      <number>123</number>
      <value>1</value>
      <type>十进制整数</type>
      <line>36</line>
      <valid>true</valid>
    </token>
    <token>
      <number>124</number>
      <value>;</value>
      <type>分隔符</type>
      <line>36</line>
      <valid>true</valid>
    </token>
    <token>
      <number>125</number>
      <value>c</value>
      <type>标识符</type>
      <line>37</line>
      <valid>true</valid>
    </token>
    <token>
      <number>126</number>
      <value>*=</value>
      <type>运算符</type>
      <line>37</line>
      <valid>true</valid>
    </token>
    <token>
      <number>127</number>
      <value>a</value>
      <type>标识符</type>
      <line>37</line>
      <valid>true</valid>
    </token>
    <token>
      <number>128</number>
      <value>;</value>
      <type>分隔符</type>
      <line>37</line>
      <valid>true</valid>
    </token>
    <token>
      <number>129</number>
      <value>c</value>
      <type>标识符</type>
      <line>38</line>
      <valid>true</valid>
    </token>
    <token>
      <number>130</number>
      <value>=</value>
      <type>运算符</type>
      <line>38</line>
      <valid>true</valid>
    </token>
    <token>
      <number>131</number>
      <value>a</value>
      <type>标识符</type>
      <line>38</line>
      <valid>true</valid>
    </token>
    <token>
      <number>132</number>
      <value>%</value>
      <type>运算符</type>
      <line>38</line>
      <valid>true</valid>
    </token>
    <token>
      <number>133</number>
      <value>b</value>
      <type>标识符</type>
      <line>38</line>
      <valid>true</valid>
    </token>
    <token>
      <number>134</number>
      <value>;</value>
      <type>分隔符</type>
      <line>38</line>
      <valid>true</valid>
    </token>
    <token>
      <number>135</number>
      <value>c</value>
      <type>标识符</type>
      <line>39</line>
      <valid>true</valid>
    </token>
    <token>
      <number>136</number>
      <value>=</value>
      <type>运算符</type>
      <line>39</line>
      <valid>true</valid>
    </token>
    <token>
      <number>137</number>
      <value>a</value>
      <type>标识符</type>
      <line>39</line>
      <valid>true</valid>
    </token>
    <token>
      <number>138</number>
      <value>/</value>
      <type>运算符</type>
      <line>39</line>
      <valid>true</valid>
    </token>
    <token>
      <number>139</number>
      <value>b</value>
      <type>标识符</type>
      <line>39</line>
      <valid>true</valid>
    </token>
    <token>
      <number>140</number>
      <value>;</value>
      <type>分隔符</type>
      <line>39</line>
      <valid>true</valid>
    </token>
    <token>
      <number>141</number>
      <value>c</value>
      <type>标识符</type>
      <line>40</line>
      <valid>true</valid>
    </token>
    <token>
      <number>142</number>
      <value>=</value>
      <type>运算符</type>
      <line>40</line>
      <valid>true</valid>
    </token>
    <token>
      <number>143</number>
      <value>a</value>
      <type>标识符</type>
      <line>40</line>
      <valid>true</valid>
    </token>
    <token>
      <number>144</number>
      <value>b</value>
      <type>标识符</type>
      <line>40</line>
      <valid>true</valid>
    </token>
    <token>
      <number>145</number>
      <value>;</value>
      <type>分隔符</type>
      <line>40</line>
      <valid>true</valid>
    </token>
    <token>
      <number>146</number>
      <value>c</value>
      <type>标识符</type>
      <line>41</line>
      <valid>true</valid>
    </token>
    <token>
      <number>147</number>
      <value>=</value>
      <type>运算符</type>
      <line>41</line>
      <valid>true</valid>
    </token>
    <token>
      <number>148</number>
      <value>a</value>
      <type>标识符</type>
      <line>41</line>
      <valid>true</valid>
    </token>
    <token>
      <number>149</number>
      <value>2</value>
      <type>十进制整数</type>
      <line>41</line>
      <valid>true</valid>
    </token>
    <token>
      <number>150</number>
      <value>;</value>
      <type>分隔符</type>
      <line>41</line>
      <valid>true</valid>
    </token>
    <token>
      <number>151</number>
      <value>c</value>
      <type>标识符</type>
      <line>42</line>
      <valid>true</valid>
    </token>
    <token>
      <number>152</number>
      <value>=</value>
      <type>运算符</type>
      <line>42</line>
      <valid>true</valid>
    </token>
    <token>
      <number>153</number>
      <value>a</value>
      <type>标识符</type>
      <line>42</line>
      <valid>true</valid>
    </token>
    <token>
      <number>154</number>
      <value>&amp;</value>
      <type>运算符</type>
      <line>42</line>
      <valid>true</valid>
    </token>
    <token>
      <number>155</number>
      <value>b</value>
      <type>标识符</type>
      <line>42</line>
      <valid>true</valid>
    </token>
    <token>
      <number>156</number>
      <value>;</value>
      <type>分隔符</type>
      <line>42</line>
      <valid>true</valid>
    </token>
    <token>
      <number>157</number>
      <value>struct</value>
      <type>关键字</type>
      <line>43</line>
      <valid>true</valid>
    </token>
    <token>
      <number>158</number>
      <value>S</value>
      <type>标识符</type>
      <line>43</line>
      <valid>true</valid>
    </token>
    <token>
      <number>159</number>
      <value>;</value>
      <type>分隔符</type>
      <line>43</line>
      <valid>true</valid>
    </token>
    <token>
      <number>160</number>
      <value>S</value>
      <type>标识符</type>
      <line>44</line>
      <valid>true</valid>
    </token>
    <token>
      <number>161</number>
      <value>.</value>
      <type>分隔符</type>
      <line>44</line>
      <valid>true</valid>
    </token>
    <token>
      <number>162</number>
      <value>struct_son</value>
      <type>标识符</type>
      <line>44</line>
      <valid>true</valid>
    </token>
    <token>
      <number>163</number>
      <value>printf</value>
      <type>关键字</type>
      <line>46</line>
      <valid>true</valid>
    </token>
    <token>
      <number>164</number>
      <value>(</value>
      <type>分隔符</type>
      <line>46</line>
      <valid>true</valid>
    </token>
    <token>
      <number>165</number>
      <value>"zhende%d\n"</value>
      <type>字符串常量</type>
      <line>46</line>
      <valid>true</valid>
    </token>
    <token>
      <number>166</number>
      <value>,</value>
      <type>分隔符</type>
      <line>46</line>
      <valid>true</valid>
    </token>
    <token>
      <number>167</number>
      <value>m</value>
      <type>标识符</type>
      <line>46</line>
      <valid>true</valid>
    </token>
    <token>
      <number>168</number>
      <value>)</value>
      <type>分隔符</type>
      <line>46</line>
      <valid>true</valid>
    </token>
    <token>
      <number>169</number>
      <value>;</value>
      <type>分隔符</type>
      <line>46</line>
      <valid>true</valid>
    </token>
    <token>
      <number>170</number>
      <value>return</value>
      <type>关键字</type>
      <line>47</line>
      <valid>true</valid>
    </token>
    <token>
      <number>171</number>
      <value>m</value>
      <type>标识符</type>
      <line>47</line>
      <valid>true</valid>
    </token>
    <token>
      <number>172</number>
      <value>;</value>
      <type>分隔符</type>
      <line>47</line>
      <valid>true</valid>
    </token>
    <token>
      <number>173</number>
      <value>}</value>
      <type>分隔符</type>
      <line>48</line>
      <valid>true</valid>
    </token>
    <token>
      <number>174</number>
      <value>void</value>
      <type>关键字</type>
      <line>50</line>
      <valid>true</valid>
    </token>
    <token>
      <number>175</number>
      <value>test_wrong</value>
      <type>标识符</type>
      <line>50</line>
      <valid>true</valid>
    </token>
    <token>
      <number>176</number>
      <value>(</value>
      <type>分隔符</type>
      <line>50</line>
      <valid>true</valid>
    </token>
    <token>
      <number>177</number>
      <value>)</value>
      <type>分隔符</type>
      <line>50</line>
      <valid>true</valid>
    </token>
    <token>
      <number>178</number>
      <value>{</value>
      <type>分隔符</type>
      <line>50</line>
      <valid>true</valid>
    </token>
    <token>
      <number>179</number>
      <value>string</value>
      <type>标识符</type>
      <line>52</line>
      <valid>true</valid>
    </token>
    <token>
      <number>180</number>
      <value>haha</value>
      <type>标识符</type>
      <line>52</line>
      <valid>true</valid>
    </token>
    <token>
      <number>181</number>
      <value>=</value>
      <type>运算符</type>
      <line>52</line>
      <valid>true</valid>
    </token>
    <token>
      <number>182</number>
      <value>"xxxxxxx";</value>
      <type>错误</type>
      <line>53</line>
      <valid>false</valid>
    </token>
    <token>
      <number>183</number>
      <value>char</value>
      <type>关键字</type>
      <line>54</line>
      <valid>true</valid>
    </token>
    <token>
      <number>184</number>
      <value>b</value>
      <type>标识符</type>
      <line>54</line>
      <valid>true</valid>
    </token>
    <token>
      <number>185</number>
      <value>=</value>
      <type>运算符</type>
      <line>54</line>
      <valid>true</valid>
    </token>
    <token>
      <number>186</number>
      <value>'dddd';</value>
      <type>错误</type>
      <line>54</line>
      <valid>false</valid>
    </token>
    <token>
      <number>187</number>
      <value>}</value>
      <type>分隔符</type>
      <line>58</line>
      <valid>true</valid>
    </token>
  </tokens>
  <错误信息>
    <错误编号>1</错误编号>
    <错误信息>字符串中不允许换行</错误信息>
    <错误所在行>53</错误所在行>
    <错误单词>"xxxxxxx";</错误单词>
  </错误信息>
  <错误信息>
    <错误编号>2</错误编号>
    <错误信息>这不是一个合法的字符常量</错误信息>
    <错误所在行>54</错误所在行>
    <错误单词>'dddd';</错误单词>
  </错误信息>
</project>

3.算法说明

由c语言语法推导出对应的DFA,然后使用状态转换表进行描述。

如下图,ai(0<=i<=20),其中a0代表初始状态,其余ai,每个状态对应从初始状态读入一个状态后将要跳转到的状态

4.代码说明

词法分析状态转换图(DFA)