在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → VBF编程语言编译器前端库:灵活扩展的源码下载

VBF编程语言编译器前端库:灵活扩展的源码下载

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:0.48M
  • 下载次数:0
  • 浏览次数:6
  • 发布时间:2024-03-20
  • 实例类别:一般编程问题
  • 发 布 人:chenxiaolan
  • 文件格式:.zip
  • 所需积分:2
 相关标签:

实例介绍

【实例简介】
Ninputer是一个专为编程语言编译器设计的灵活且可扩展的前端库,它包含了一系列的编译器工具和库。VBF(Ninputer的一部分)提供了分离的扫描器和解析器库,用户可以单独使用一个组件,也可以将它们全部结合起来使用。

如何构建:
首先,安装Visual Studio 2015并带有.Net Framework 4.5。打开选项对话框,转到“包管理器”并勾选“允许NuGet在构建期间下载缺失的包”。接着,打开项目VBF/src/Compilers/Compilers.sln并进行构建。构建完成后,二进制文件将放置在VBF/bin文件夹中。默认情况下,所有二进制文件都是延迟签名的,您可以选择禁用代码签名或使用'sn -Vr'命令绕过程序集验证,然后测试二进制文件。

组件:
VBF.Compilers.Common提供源文件阅读器、编译错误管理等功能。
VBF.Compilers.Scanners提供基于DFA的扫描器构建器,使用正则表达式。有多种类型的扫描器可供选择:标准Scanner、具有窥视n个令牌能力的PeekableScanner、可以分叉为多个扫描头的ForkableScanner。
VBF.Compilers.Parsers提供强大的基于GLR的、自动错误恢复的解析器生成器。开始时,继承ParserBase类并构建您自己的解析器。这对于大多数解析器来说是推荐的。
VBF.Compilers.Parsers.Combinators与Compilers.Parsers类似,但它是一个基于GLL的解析器组合库。与VBF.Compilers.Parsers相比,该库支持的语法相对较弱,解析速度也较慢。主要用于研究LL语法。

示例:
MiniSharp是一个完全功能的编译器,它是C#语言的一个非常小的子集。它包含了使用VBF构建的解析器和扫描器以及一个MSIL代码生成器。这对于编程语言和DSL作者来说是一个很好的示例。

【实例截图】
【核心代码】
文件清单
└── VBF-bd504d6a62a15a351a0e8ff3ce9a13de3914da78
    ├── LICENSE.txt
    ├── packagespecs
    │   ├── VBF.Compilers.Common
    │   │   └── VBF.Compilers.Common.nuspec
    │   ├── VBF.Compilers.Parsers
    │   │   └── VBF.Compilers.Parsers.nuspec
    │   └── VBF.Compilers.Scanners
    │       └── VBF.Compilers.Scanners.nuspec
    ├── README.md
    ├── resign.cmd
    └── src
        ├── Compilers
        │   ├── Compilers.Common
        │   │   ├── CodeContract.cs
        │   │   ├── Common
        │   │   │   ├── DepthFirstSearch.cs
        │   │   │   ├── DisjointSets.cs
        │   │   │   ├── EditDistanceCalculator.cs
        │   │   │   ├── PriorityQueue.cs
        │   │   │   └── StringHelpers.cs
        │   │   ├── CompilationError.cs
        │   │   ├── CompilationErrorInfoCollection.cs
        │   │   ├── CompilationErrorInfo.cs
        │   │   ├── CompilationErrorList.cs
        │   │   ├── CompilationErrorManager.cs
        │   │   ├── CompilationStage.cs
        │   │   ├── Compilers.Common.csproj
        │   │   ├── Properties
        │   │   │   └── AssemblyInfo.cs
        │   │   ├── RevertPointCollection.cs
        │   │   ├── RevertPoint.cs
        │   │   ├── SourceLocation.cs
        │   │   ├── SourceReader.cs
        │   │   ├── SourceSpan.cs
        │   │   └── StringBuilderReader.cs
        │   ├── Compilers.Intermediate
        │   │   ├── AssignInstruction.cs
        │   │   ├── BinaryExpression.cs
        │   │   ├── Compilers.Intermediate.csproj
        │   │   ├── ConstValue.cs
        │   │   ├── ConvertExpression.cs
        │   │   ├── Expression.cs
        │   │   ├── GotoInstruction.cs
        │   │   ├── Instruction.cs
        │   │   ├── Label.cs
        │   │   ├── Operand.cs
        │   │   ├── PrimaryType.cs
        │   │   ├── Properties
        │   │   │   └── AssemblyInfo.cs
        │   │   ├── ReceiveInstruction.cs
        │   │   ├── TreeLang.cs
        │   │   ├── UnaryExpression.cs
        │   │   └── Variable.cs
        │   ├── Compilers.Parsers
        │   │   ├── AlternationProduction.cs
        │   │   ├── AmbiguityAggregator.cs
        │   │   ├── Compilers.Parsers.csproj
        │   │   ├── ConcatenationProduction.cs
        │   │   ├── DefaultValueContainer.cs
        │   │   ├── EmptyProduction.cs
        │   │   ├── EndOfStream.cs
        │   │   ├── ErrorRecord.cs
        │   │   ├── Generator
        │   │   │   ├── ClosureVisitor.cs
        │   │   │   ├── GeneratorVisitors.cs
        │   │   │   ├── LR0Edge.cs
        │   │   │   ├── LR0Item.cs
        │   │   │   ├── LR0Model.cs
        │   │   │   ├── LR0State.cs
        │   │   │   ├── ProductionInfo.cs
        │   │   │   ├── ProductionInfoManager.cs
        │   │   │   ├── ReduceAction.cs
        │   │   │   ├── SymbolConversion.cs
        │   │   │   └── TransitionTable.cs
        │   │   ├── Grammar.cs
        │   │   ├── IProduction.cs
        │   │   ├── IProductionVisitor.cs
        │   │   ├── MappingProduction.cs
        │   │   ├── PanicRecoverException.cs
        │   │   ├── ParserBase.cs
        │   │   ├── ParserEngine.cs
        │   │   ├── ParserHeadCleaner.cs
        │   │   ├── ParserHead.cs
        │   │   ├── ParsingFailureException.cs
        │   │   ├── ProductionBase.cs
        │   │   ├── Production.cs
        │   │   ├── Properties
        │   │   │   └── AssemblyInfo.cs
        │   │   ├── ReduceVisitor.cs
        │   │   ├── RepeatParserListNode.cs
        │   │   ├── ResultInfo.cs
        │   │   ├── SetHelpers.cs
        │   │   ├── StackNode.cs
        │   │   ├── SyntaxErrors.cs
        │   │   └── Terminal.cs
        │   ├── Compilers.Parsers.Combinators
        │   │   ├── AlternationParser.cs
        │   │   ├── AnyTokenParser.cs
        │   │   ├── Compilers.Parsers.Combinators.csproj
        │   │   ├── ConcatenationParser.cs
        │   │   ├── ConvertHelper.cs
        │   │   ├── EndOfStreamParser.cs
        │   │   ├── ErrorCorrection.cs
        │   │   ├── MappingParser.cs
        │   │   ├── ParserContext.cs
        │   │   ├── Parser.cs
        │   │   ├── ParserFrame.cs
        │   │   ├── ParserReference.cs
        │   │   ├── ParserRunner.cs
        │   │   ├── Parsers.cs
        │   │   ├── Properties
        │   │   │   └── AssemblyInfo.cs
        │   │   ├── RepeatParserListNode.cs
        │   │   ├── Result.cs
        │   │   ├── SucceedParser.cs
        │   │   └── TokenParser.cs
        │   ├── Compilers.Scanners
        │   │   ├── AlternationCharSetExpression.cs
        │   │   ├── AlternationExpression.cs
        │   │   ├── CacheQueue.cs
        │   │   ├── CharSetExpressionBuilder.cs
        │   │   ├── Compilers.Scanners.csproj
        │   │   ├── ConcatenationExpression.cs
        │   │   ├── EmptyExpression.cs
        │   │   ├── FiniteAutomationEngine.cs
        │   │   ├── ForkableScannerBuilder.cs
        │   │   ├── ForkableScannerCore.cs
        │   │   ├── ForkableScanner.cs
        │   │   ├── Generator
        │   │   │   ├── CompactCharSetManager.cs
        │   │   │   ├── CompressedTransitionTable.cs
        │   │   │   ├── DFAEdge.cs
        │   │   │   ├── DFAModel.cs
        │   │   │   ├── DFAState.cs
        │   │   │   ├── NFAConverter.cs
        │   │   │   ├── NFAEdge.cs
        │   │   │   ├── NFAModel.cs
        │   │   │   └── NFAState.cs
        │   │   ├── HistoryList.cs
        │   │   ├── KleeneStarExpression.cs
        │   │   ├── Lexeme.cs
        │   │   ├── LexemeRange.cs
        │   │   ├── LexemeValue.cs
        │   │   ├── Lexer.cs
        │   │   ├── Lexicon.cs
        │   │   ├── PeekableScanner.cs
        │   │   ├── Properties
        │   │   │   └── AssemblyInfo.cs
        │   │   ├── RegularExpressionConverter.cs
        │   │   ├── RegularExpression.cs
        │   │   ├── RegularExpressionType.cs
        │   │   ├── Scanner.cs
        │   │   ├── ScannerException.cs
        │   │   ├── ScannerInfo.cs
        │   │   ├── StringLiteralExpression.cs
        │   │   ├── SymbolExpression.cs
        │   │   ├── Token.cs
        │   │   ├── TokenInfo.cs
        │   │   └── UnitTestVisibility.cs
        │   ├── Compilers.sln
        │   ├── Compilers.sln.DotSettings
        │   ├── Compilers.UnitTests
        │   │   ├── CommonTests.cs
        │   │   ├── Compilers.UnitTests.csproj
        │   │   ├── Compilers.UnitTests.snk
        │   │   ├── GrammarTests.cs
        │   │   ├── packages.config
        │   │   ├── ParserBuilderTest.cs
        │   │   ├── ParserCombinatorsTest.cs
        │   │   ├── Properties
        │   │   │   └── AssemblyInfo.cs
        │   │   └── ScannersTest.cs
        │   └── Key
        │       ├── PublicKeyAndToken.txt
        │       └── VBF.Public.snk
        ├── Samples
        │   └── MiniSharp
        │       ├── app.config
        │       ├── ArrayType.cs
        │       ├── Ast
        │       │   ├── ArrayAssign.cs
        │       │   ├── ArrayLength.cs
        │       │   ├── ArrayLookup.cs
        │       │   ├── Assign.cs
        │       │   ├── AstNode.cs
        │       │   ├── AstVisitor.cs
        │       │   ├── Binary.cs
        │       │   ├── Block.cs
        │       │   ├── BooleanLiteral.cs
        │       │   ├── BooleanType.cs
        │       │   ├── Call.cs
        │       │   ├── ClassDecl.cs
        │       │   ├── Expression.cs
        │       │   ├── FieldDecl.cs
        │       │   ├── Formal.cs
        │       │   ├── IAstVisitor.cs
        │       │   ├── IdentifierType.cs
        │       │   ├── IfElse.cs
        │       │   ├── IntArrayType.cs
        │       │   ├── IntegerLiteral.cs
        │       │   ├── IntegerType.cs
        │       │   ├── MainClass.cs
        │       │   ├── MethodDecl.cs
        │       │   ├── MethodRef.cs
        │       │   ├── NewArray.cs
        │       │   ├── NewObject.cs
        │       │   ├── Not.cs
        │       │   ├── Program.cs
        │       │   ├── Statement.cs
        │       │   ├── This.cs
        │       │   ├── TypeConvert.cs
        │       │   ├── Type.cs
        │       │   ├── TypeRef.cs
        │       │   ├── VarDecl.cs
        │       │   ├── Variable.cs
        │       │   ├── VariableRef.cs
        │       │   ├── While.cs
        │       │   └── WriteLine.cs
        │       ├── CodeClassType.cs
        │       ├── ExtensionTable.cs
        │       ├── Field.cs
        │       ├── MemberDeclResolver.cs
        │       ├── MethodBodyResolver.cs
        │       ├── Method.cs
        │       ├── MethodOverloadingComparer.cs
        │       ├── MiniSharp.csproj
        │       ├── MiniSharpParser.CP.cs
        │       ├── MiniSharpParser.cs
        │       ├── MiniSharp.sln
        │       ├── Parameter.cs
        │       ├── PrimaryType.cs
        │       ├── ProgramEntry.cs
        │       ├── Properties
        │       │   └── AssemblyInfo.cs
        │       ├── Targets
        │       │   └── Cil
        │       │       └── EmitTranslator.cs
        │       ├── TypeBase.cs
        │       ├── TypeCollection.cs
        │       ├── TypeDeclResolver.cs
        │       ├── VariableCollection.cs
        │       └── VariableInfo.cs
        └── temp
            ├── CodeDomTranslator.cs
            ├── ForkNode.cs
            ├── Parser.cs
            ├── ParserFunc.cs
            └── Parsers.cs

30 directories, 219 files

标签:

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警