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

📄 analysecases.java

📁 编译器中的词法分析
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                                     else if (i == content.length() - 1)
                                     {
                                         token = token + content.charAt(i);
                                         arrayToken.add(token);
                                         arrayType.add("error");
                                         errorType.add("非法数字");
                                         endPlace = i;
                                         endPlaceArray.add(endPlace);
                                         break; 
                                     }
                                     else
                                     {
                                         token = token + content.charAt(i);
                                     }
                                 }
                                 break;
                             }
                         }
                         else
                         {
                             arrayToken.add("0.");
                             arrayType.add("error");
                             errorType.add("非法数字");
                             endPlace = startPlace + 1;
                             endPlaceArray.add(endPlace);
                         }
                     }
                     else
                     {
                         for (int i = startPlace + 1; i < content.length(); i++)
                         {
                             if (content.charAt(i) == '+' || content.charAt(i) == '-' || content.charAt(i) == '*' ||
                                 content.charAt(i) == '/' || content.charAt(i) == '(' || content.charAt(i) == ')' ||
                                 content.charAt(i) == '[' || content.charAt(i) == ']' || content.charAt(i) == ';' ||
                                 content.charAt(i) == '{' || content.charAt(i) == '}' || content.charAt(i) == '=' ||
                                 content.charAt(i) == '<' || content.charAt(i) == '>' || content.charAt(i) == ' ' ||
                                 content.charAt(i) == '\n')
                             {
                                 arrayToken.add(token);
                                 arrayType.add("error");
                                 errorType.add("非法数字");
                                 endPlace = i - 1;
                                 endPlaceArray.add(endPlace);
                                 break;
                             }
                             else if (i == content.length() - 1)
                             {
                                 token = token + content.charAt(i);
                                 arrayToken.add(token);
                                 arrayType.add("error");
                                 errorType.add("非法数字");
                                 endPlace = i;
                                 endPlaceArray.add(endPlace);
                                 break; 
                             }
                             else
                             {
                                 token = token + content.charAt(i);
                             }
                         }
                     }
                 }
                 else
                 {
                     arrayToken.add(curch);
                     arrayType.add("数字");
                     errorType.add("correct");
                     endPlace = startPlace;
                     endPlaceArray.add(endPlace);
                 }
                 break;

             case '1':
             case '2':
             case '3':
             case '4':
             case '5':
             case '6':
             case '7':
             case '8':
             case '9':
                 //token = curch.ToString();
                 token = java.lang.Character.toString(curch);

                 if (startPlace + 1 < content.length())
                 {
                     int dotNum = 0;
                     int i = startPlace + 1;
                     boolean key = true;

                     while (key)
                     {
                         switch (content.charAt(i))
                         {
                             case '0':
                             case '1':
                             case '2':
                             case '3':
                             case '4':
                             case '5':
                             case '6':
                             case '7':
                             case '8':
                             case '9':
                                 token = token + content.charAt(i);
                                 if (i <= content.length() - 2)
                                 {
                                     endPlace = i;
                                     i++;
                                     continue;
                                 }
                                 else
                                 {
                                     arrayToken.add(token);
                                     arrayType.add("数字");
                                     errorType.add("correct");
                                     endPlace = i;
                                     endPlaceArray.add(endPlace);
                                     key = false;
                                     break;
                                 }

                             case '.':
                                 token = token + content.charAt(i);
                                 dotNum++;
                                 if (dotNum > 1)
                                 {
                                     arrayToken.add(token);
                                     arrayType.add("error");
                                     errorType.add("非法数字");
                                     endPlace = i;
                                     endPlaceArray.add(endPlace);
                                     key = false;
                                     break;
                                 }
                                 else
                                 {
                                     if (i <= content.length() - 2)
                                     {
                                         endPlace = i;
                                         i++;
                                         continue;
                                     }
                                     else
                                     {
                                         arrayToken.add(token);
                                         arrayType.add("数字");
                                         errorType.add("correct");
                                         endPlace = i;
                                         endPlaceArray.add(endPlace);
                                         key = false;
                                         break;
                                     }
                                 }
                             default:
                                 key = false;

                                 if (content.charAt(i) == '+' || content.charAt(i) == '-' || content.charAt(i) == '*' ||
                                     content.charAt(i) == '/' || content.charAt(i) == '(' || content.charAt(i) == ')' ||
                                     content.charAt(i) == '[' || content.charAt(i) == ']' || content.charAt(i) == ';' ||
                                     content.charAt(i) == '{' || content.charAt(i) == '}' || content.charAt(i) == '=' ||
                                     content.charAt(i) == '<' || content.charAt(i) == '>' || content.charAt(i) == ' ' ||
                                     content.charAt(i) == '\n')
                                 {
                                     arrayToken.add(token);
                                     arrayType.add("数字");
                                     errorType.add("correct");
                                     endPlace = i - 1;
                                     endPlaceArray.add(endPlace);
                                     break;
                                 }
                                 else 
                                 {
                                     for (int j = i; j < content.length(); j++)
                                     {
                                         if (content.charAt(j) == '+' || content.charAt(j) == '-' || content.charAt(j) == '*' ||
                                             content.charAt(j) == '/' || content.charAt(j) == '(' || content.charAt(j) == ')' ||
                                             content.charAt(j) == '[' || content.charAt(j) == ']' || content.charAt(j) == ';' ||
                                             content.charAt(j) == '{' || content.charAt(j) == '}' || content.charAt(j) == '=' ||
                                             content.charAt(j) == '<' || content.charAt(j) == '>' || content.charAt(j) == ' ' ||
                                             content.charAt(j) == '\n')
                                         {
                                             arrayToken.add(token);
                                             arrayType.add("error");
                                             errorType.add("非法数字");
                                             endPlace = j - 1;
                                             endPlaceArray.add(endPlace);
                                             break;
                                         }
                                         else if (j == content.length() - 1)
                                         {
                                             token = token + content.charAt(j);
                                             arrayToken.add(token);
                                             arrayType.add("error");
                                             errorType.add("非法数字");
                                             endPlace = j;
                                             endPlaceArray.add(endPlace);
                                             break; 
                                         }
                                         else
                                         {
                                             token = token + content.charAt(j);
                                         }
                                     }
                                 }
                                 break;
                         }
                     }  
                 }
                 else
                 {
                     arrayToken.add(curch);
                     arrayType.add("数字");
                     errorType.add("correct");
                     endPlace = startPlace;
                     endPlaceArray.add(endPlace);
                 }
                 break;
         }
     }

     /// <summary>
     /// 判断是否为标识符
     /// </summary>
     /// <param name="startPlace"></param>
     /// <param name="curch"></param>
     /// <param name="content"></param>
     public void IsIdentifier(int startPlace, char curch, String content)
     {
         if (startPlace + 1 < content.length())
         {
             //token = curch.ToString();
             token = java.lang.Character.toString(curch);
             
             int i = startPlace + 1;

             while (i < content.length())
             {
                 switch (content.charAt(i))
                 {
                     case '0':
                     case '1':
                     case '2':
                     case '3':
                     case '4':
                     case '5':
                     case '6':
                     case '7':
                     case '8':
                     case '9':
                     case '_':
                         token = token + content.charAt(i);
                         i++;
                         continue;
                 }

⌨️ 快捷键说明

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