• 大小: 4.9MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-16
  • 语言: 其他
  • 标签: 编译原理  

资源简介

编译原理课程设计 词法分析器: 1 实现自动化词法分析程序 2 要求至少支持科学计数法常量和标识符字符 3 根据输入的源程序输出Token串 若为非法单词则输出错误信息 语法分析器: 1 要求使用LL(1)文法 算符优先文法 LR 1 文法三种分析方法之一进行语法分析 2 输入上下文无关文法 输出语法分析程序 3 输入待检测的Token串 输出检测结果 同时可以处理分析中的异常和错误 ">编译原理课程设计 词法分析器: 1 实现自动化词法分析程序 2 要求至少支持科学计数法常量和标识符字符 3 根据输入的源程序输出Token串 若为非法单词则输出错误信息 语法分析器: 1 要求使用LL(1)文法 算符优先 [更多]

资源截图

代码片段和文件信息

using System;
using Storage;
using System.Collections.Generic;

namespace Algorithm
{
    public class Analyzer
    {
        public string Content { get; private set; }
        private int StartPoint ReaderPoint;
        private DFA dfa;
        private KeyWordMap keyWordMap;
        private IdentifierMap identifierMap;

        public Analyzer(string content)
        {
            this.Content = string.Concat(content.Replace(“\r“ ““) “\n“);
            this.StartPoint = this.ReaderPoint = 0;
            this.dfa = new DFA();
            keyWordMap = KeyWordMap.Instance;
            identifierMap = IdentifierMap.Instance;
        }

        private WordType GetType(int status string s)
        {
            if (status == 1 || status == 2)
            {
                return WordType.Decimal;
            }
            if (status == 3)
            {
                return WordType.Octonary;
            }
            if (status == 4)
            {
                return WordType.Hexadecimal;
            }
            if (status == 5 || status == 6)
            {
                return WordType.FloatConstant;
            }
            if (status == 7)
            {
                if (keyWordMap.InMap(s))
                {
                    return WordType.Keyword;
                }
                else
                {
                    return WordType.Identifier;
                }
            }
            if (8 <= status && status <= 29)
            {
                if (s == “{“ || s == “}“ || s == “;“ || s == “:“)
                {
                    return WordType.Delimiter;
                }
                else
                {
                    return WordType.Operator;
                }
            }
            if (status == 30)
            {
                return WordType.Character;
            }
            if (status == 31)
            {
                return WordType.StringCharacter;
            }
            if (status == 32 || status == 33)
            {
                return WordType.Comment;
            }
            throw new Exception(“Not a end point“);
        }

        public Token GetNextWord()
        {
            Read();
            if (!dfa.IsEnd())
            {
                if (dfa.Status == 0)
                {
                    return null;
                }
                else
                {
                    ThrowException(ExceptionType.CommentException);
                }
            }
            if (dfa.Rollback())
            {
                ReaderPoint--;
            }
            Token result = BuildToken();
            StartPoint = ReaderPoint;
            dfa.Reset();
            return result;
        }

        private char ReadNextChar()
        {
            if (ReaderPoint < Content.Length)
            {
                return Content[ReaderPoint++];
            }

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2618  2012-04-12 15:13  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\Algorithm.csproj

     文件       6881  2014-06-21 18:44  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\Analyzer.cs

     文件      12800  2014-06-22 23:13  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\bin\Debug\Algorithm.dll

     文件      46592  2014-06-22 23:13  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\bin\Debug\Algorithm.pdb

     文件      36352  2014-06-22 23:13  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\bin\Debug\Storage.pdb

     文件      11264  2014-06-21 18:44  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\bin\Release\Algorithm.dll

     文件      38400  2014-06-21 18:44  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\bin\Release\Algorithm.pdb

     文件      32256  2014-06-21 18:44  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\bin\Release\Storage.pdb

     文件      14942  2012-04-11 23:23  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\DFA.cs

     文件       2227  2014-06-22 23:13  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\obj\Debug\Algorithm.csproj.FileListAbsolute.txt

     文件       7275  2014-06-22 23:13  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\obj\Debug\Algorithm.csprojResolveAssemblyReference.cache

     文件      12800  2014-06-22 23:13  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\obj\Debug\Algorithm.dll

     文件      46592  2014-06-22 23:13  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\obj\Debug\Algorithm.pdb

     文件       5794  2014-06-22 23:13  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache

     文件       2253  2014-06-21 18:44  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\obj\Release\Algorithm.csproj.FileListAbsolute.txt

     文件       5970  2014-06-21 18:44  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\obj\Release\Algorithm.csprojResolveAssemblyReference.cache

     文件      11264  2014-06-21 18:44  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\obj\Release\Algorithm.dll

     文件      38400  2014-06-21 18:44  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\obj\Release\Algorithm.pdb

     文件       5849  2014-06-21 18:44  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\obj\Release\DesignTimeResolveAssemblyReferencesInput.cache

     文件       3829  2014-06-19 20:48  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\obj\Release\ResolveAssemblyReference.cache

     文件       1350  2012-04-08 19:48  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\Properties\AssemblyInfo.cs

     文件       2278  2012-04-12 12:36  编译原理——词法语法分析器\LexicalAnalyzer\Algorithm\Tool.cs

     文件       3565  2012-04-12 12:35  编译原理——词法语法分析器\LexicalAnalyzer\LexicalAnalyzer.sln

    ..A..H.     89600  2014-06-23 10:16  编译原理——词法语法分析器\LexicalAnalyzer\LexicalAnalyzer.suo

     文件      36352  2014-06-22 23:13  编译原理——词法语法分析器\LexicalAnalyzer\Storage\bin\Debug\Storage.pdb

     文件      32256  2014-06-21 18:44  编译原理——词法语法分析器\LexicalAnalyzer\Storage\bin\Release\Storage.pdb

     文件        737  2012-04-12 10:41  编译原理——词法语法分析器\LexicalAnalyzer\Storage\ExceptionType.cs

     文件       1804  2012-04-12 10:41  编译原理——词法语法分析器\LexicalAnalyzer\Storage\Folders.cs

     文件        850  2012-04-12 10:41  编译原理——词法语法分析器\LexicalAnalyzer\Storage\IdentifierMap.cs

     文件       1294  2012-04-12 10:41  编译原理——词法语法分析器\LexicalAnalyzer\Storage\KeyWordMap.cs

............此处省略279个文件信息

评论

共有 条评论