Git Product home page Git Product logo

yaccconstructor / yaccconstructor Goto Github PK

View Code? Open in Web Editor NEW
38.0 38.0 30.0 230.29 MB

Platform for parser generators and other grammarware research and development. GLL, RNGLR, graph parsing algorithms, and many others are included.

Home Page: http://yaccconstructor.github.io/YaccConstructor/

License: Apache License 2.0

GAP 0.01% F# 93.73% OCaml 1.59% Batchfile 0.34% Shell 0.06% C# 4.14% Python 0.14%
ebnf fsharp gll-parser glr-parser grammarware lexical-analysis lexing parser-generator parsing

yaccconstructor's Introduction

Issue Stats Issue Stats Repository Size YaccConstructor

Platform for parser generators and other grammarware research and development. GLL, RNGLR, graph parsing algorithms, and many others are included.

Build status:

Branch .NET Mono
Master Master build status Build Status
Dev Dev build status Build Status
GLL-FSA GLL-FSA build status Build Status

Packages:

Package
YC.SDK NuGet Status
YC.SDK.Runtime NuGet Status

Develop

  • Read code style
  • We use git lfs, so install it first.
  • Get sources. We use submodules, so use git clone --recursive
  • Run build.cmd to perform initial build.
  • Use MS VS 2015 to develop. Main solution is YaccConstructor.sln. You can create your own solutions.

Maintainer(s)

yaccconstructor's People

Contributors

alekseialefirov avatar alisonya avatar anastasiyaragozina avatar aozertsov avatar arturbaykov avatar ascherbakhov avatar baygeldin avatar bazt avatar bronti avatar columpio avatar dyukha avatar ekirillm avatar emavchun avatar gorohovart avatar gsvgit avatar ilnur-slv avatar ilya-shenbin avatar ivanovandrew avatar kajigor avatar kakadu avatar luninapolina avatar mallabaevazamat avatar marat-rkh avatar mchkosticyn avatar polubelova avatar raymon-02 avatar rustam-azimov avatar sergeygrigorev avatar sunahe avatar ycgeneraluser avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

yaccconstructor's Issues

Migrate to standard .NET logging

Migrate to standard .NET logging.

  • Explore and investigate possibility of different libs and wrappers.
  • Create helper functions for tmp output files and folders creation.

Collect all grammars

Collect all grammars in one specific place. "By ref" usage in projects should be implemented instead of files copying.

  • SQL
  • Calc
  • ExtCalc
  • JSON
  • All tests should be unified

Target repo: YC.GrammarZOO

Reduce GIT configuration steps number.

WTF? Why should I specify git user name and password in more then one place to reset git repo?

  1. .Fsx script
  2. VCS root configuration
  3. "Git set user" build step
  4. ...

These parameters should be placed in one config.

Errors detection in regular set parsing

  • Investigate algorithms for syntax errors detection in string expressions.
  • Implement "on-line" and postponed errors detection for ARNGLR.
  • Compare performance of implemented algorithms.
  • Implement errors notification and navigation in R# plug-in.
  • Proof correctness of implemented algorithm.
  1. Книга: Parsing Techniques - A Practical Guide - Dick Grune
  2. Диплом.
  3. RNGLR.
  4. По ошибкам:
  1. По включению

ParserInputGraph determinization

Fix #111 first!

In current implementation ParserInputGraph is FA without epsilon transitions. It should be transformed into DFA. It is necessary to simplify regular set parsing with GLL.

If the same ident tokens, but different FAs, will be union, we get incorrect calculation of semantics or another language.

If doesn't matter which FA is in token, you can't store FA in token.

JavaScript Eval to staged metaprogramming demo.

Create demo for JS string Eval to staged metaprogramming translation. It may be actual in order to communication with authors of next articles:

  • Information Flow Analysis for a Dynamically Typed Functional Language with Staged Metaprogramming
  • Position Paper: The Science of Boxing Analysing. Eval using Staged Metaprogramming

Investigate string analysis integration with online IDE

Investigate string analysis integration with online IDE.

  • It may PHP + **SQL or any other combinations of popular language and embedded language.
  • Create a list of the most popular IDEs
  • Investigate possibility of integration (open API, standard API for extensions )
  • Choose online IDE for extension implementation.

IL to GFG converter

Implement YC IL to Grammar Flow Graph (GFG) converter and GFG visualizer. It should be YC backend. GFG description available here.

FSharp.Charting for performance graphics

Создать надстройку над http://fslab.org/FSharp.Charting/ для использования в замерах и сравнении производительности. Хочется получить обёртку, которая специализирована для рисования графиков в областе замера произволительности, которая позволяет по имеющейся функции и генератору входных данных (или набору функций и генераторов) получить график(графики), пригодные не только для визуального анализа, но и публикации в статьях.

Ожидаемая функциональность:

  • Отрисовка графика "на лету" по мере получения новых измерений
  • Возможность логарифмического масштабирования осей
  • упрощенеи создания легенды и подпичей осей/ графиков
  • Сохраниение результатов
    • csv
    • Картинка
      • Растр (png, jpg, etc)
      • Вектор (svg, pdf, eps, etc)
  • Сравнение с другими измерениями
    • Загрузка из csv (использовать CsvProvider)
    • Передача нескольких функций для измерения

Migration to ProjectScaffold.

Investigate reasonability and possibility of migration to ProjectScaffold. If it is possible and reasonable then migrate.

Checklist. Necessary functions of infrastructure:

  • Tests automation
  • Integration with TeamCity
  • Build automation
  • Documentation generation and publishing

Move BlockResizeArray from RNGLR to FSharpx.Collections

  • Move BlockResizeArray from RNGLR to FSharpx.Collections.
  • Implement standard set of functions:
    • map
    • iter
    • fold
    • init
    • zeroCreate
    • find
    • tryFind
    • filter
    • IEnumerable interface
  • Implement tests:
    • map
    • iter
    • fold
    • init
    • zeroCreate
    • find
    • tryFind
    • filter
    • IEnumerable interface
  • Implement performance tests. Compare with ResizeArray and Array.
  • Create documentation.

Grammar modularirty

Implement grammar modularity for YC/Yard.
Article for inspiration: Modular grammar specification, Adrian Johnstone, Elizabeth Scott, Mark van den Brand. Sci. Comput. Program. 87: 23-43 (2014)

Simplify code

Seems that
v.unprocessedGssVertices.RemoveAll(fun _ -> true) |> ignore
is
v.unprocessedGssVertices.Clear()

verticesToRecalc.RemoveAll(fun _ -> true) |> ignore
can be simplified too.

YC Web

Web UI for YC. Web-demo.
Technology: WebSharper

  • Algorithms visualization

  • Algorithms description

  • Algorithms comparison

  • Predefined examples

  • Interactivity

    • Grammars changing/specification
    • Input specification
  • Unify and move to one single repo with name YC.Web

  • Remove osolete repos.

  • Integration with Appharbor or other hosting service.

Fully-featured SEL support for MSVS+R#

Implement fully-featured string embedded languages support for MSVS + ReSharper.
Features:

  • syntax highlighting;
  • matched pairs highlighting;
  • errors navigation and highlighting (integration with task #24);
    • approximation graphs visualization and navigation from graph to code and back;
  • JS, C# and C++ (implementation task #29 as subtask) support as host language;
  • T-SQL and HTML as embedded language

YC.Core package is incorrect

@VereshchaginaE Execution of YC.YaccConstructor.exe failed with next message

D:\...\sbsql\SqlMigration\SqlParser\packages\YC.Core.0.3.0.1-On-branch--local\lib\net40>YC.YaccConstructor.0.3.0.1-On-branch--local.exe  -af -ag

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Addins, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756' or one of
its dependencies. The system cannot find the file specified.
   at <StartupCode$YC-YaccConstructor>.$YaccConstructor.Program.main@()

Seems, that mono.addins ddls are missed.

FsLex, reg set lexing, classical lexing unification

Create unified tool based on FsLex for classical lexers and lexers for regular set tokenization generation.

  • FsLex and Abstract lexing generator and runtime unification.
    • Abstract lexing sources: \src\AbstractLexer.*
    • FsLex\Yacc: \src\FsLex* \src\FsYacc*
    • Replace FsLex usages with result of unification
  • Full unicode support. Synchronize with task #63 .
  • Case sensitive|insensitive switch for case sensitive|insensitive languages processing
  • Recursive FA support.
  • Flag for switch classical lexer or lexer for SEL generation.

Migrate to R# 9

Migrate to R# SDK v9.*

Try to remove strange assembly redirect from app.config files.

<dependentAssembly>
        <assemblyIdentity name="JetBrains.Platform.ReSharper.Util" publicKeyToken="1010a0d8d6380325" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-8.1.555.*" newVersion="8.1.23.546" />
</dependentAssembly>

Change build config to not build each commit

Today, 40 commits went into the dev branch, which queued 40 builds on codebetter CI, which have so far occupied both Jetbrains agents for about 6 hours, with about 1 hour to go.

For the future, would it be possible to change the build config so that each commit is not built separately? E.g. this would have reduced the build agent utilisation today from about 7 hours to about 10 minutes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.